Just had an annoying 1/2 hour trying to get a properly formatted array to pass to a select control in CakePHP
In my controller I'm trying to format an array with a Custom field
$options = array( 'fields' => array( 'ReportDate.id', 'CONCAT( ReportDate.date, " " , Shift.name ) as report_date' ), 'recursive' => 0 ); $report_dates = $this->Report->ReportDate->find('all', $options); // $this->log($reportDates); $reportDates = Hash::combine($report_dates, '{n}.ReportDate.id', '{n}.{n}.report_date');
# this is the before format (without running ::combine on it) Array ( [0] => Array ( [ReportDate] => Array ( [id] => 1 ) [0] => Array ( [report_date] => 2015-03-16 ARVO ) ) [1] => Array ( [ReportDate] => Array ( [id] => 4 ) [0] => Array ( [report_date] => 2015-03-16 ARVO ) ) [2] => Array ( [ReportDate] => Array ( [id] => 2 ) [0] => Array ( [report_date] => 2015-03-16 NIGHT ) ) ) # this is after running # Set::combine($report_dates, '{n}.ReportDate.id', '{n}.{n}.report_date'); # still not right Array ( [1] => Array ( [0] => 2015-03-16 ARVO ) [4] => Array ( [0] => 2015-03-16 ARVO ) [2] => Array ( [0] => 2015-03-16 NIGHT ) ) ## and after I switched to # Hash::combine($report_dates, '{n}.ReportDate.id', '{n}.{n}.report_date'); # notice how the two levels of {n}.{n} have properly been compressed down Array ( [1] => 2015-03-16 ARVO [4] => 2015-03-16 ARVO [2] => 2015-03-16 NIGHT )
0 Comments