我创建了一个查询功能来选择一些时段,每个时段选择最大日期和天数。
$periods = $this->Periods->find('all')->contain([
'Days' => function($q) {
return $q->select([
'Days.period_id',
'max_date' => $q->func()->max('Days.date'),
'count_days' => $q->func()->count('Days.period_id')
])->group(['Days.period_id']);
}
]);
当我调试Days时,它会:
[
(int) 0 => object(Cake\ORM\Entity) {
'period_id' => (int) 1,
'max_date' => '2016-11-21',
'count_days' => (int) 2,
'[new]' => false,
'[accessible]' => [
'*' => true
],
'[dirty]' => [],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'Periods.Days'
}
]
现在我的问题是,当我使用Days时,我总是必须使用像$period['days'][0]['max_date']
这样的数字,因为它是一个多维数组。我怎样才能使用$period['days'][max_date]
。
答案 0 :(得分:1)
您正在检索所有记录时,您的记录格式正确。 你不需要该阵列中的多条记录吗?如果是这样,您只能检索单行。否则你可以使用foreach循环:
foreach($periods as $p) {
echo $p->max_date;
echo $p->count_days;
}