CakePHP 3 Contains 将给出一个多维数组
CakePHP 3 Contains will give a multidimensional array
我创建了一个查询函数,用于 select 一些时间段以及每个时间段的最大日期和天数。
$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'
}
]
现在我的问题是,当我使用天数时,我总是必须使用像 $period['days'][0]['max_date']
这样的数字,因为它是一个多维数组。我怎样才能使我可以使用 $period['days'][max_date]
.
您正在检索所有记录,因此您的记录格式正确。
您不需要该数组中的多条记录吗?如果是这样,您只能检索单行。否则你可以使用 foreach 循环:
foreach($periods as $p) {
echo $p->max_date;
echo $p->count_days;
}
我创建了一个查询函数,用于 select 一些时间段以及每个时间段的最大日期和天数。
$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'
}
]
现在我的问题是,当我使用天数时,我总是必须使用像 $period['days'][0]['max_date']
这样的数字,因为它是一个多维数组。我怎样才能使我可以使用 $period['days'][max_date]
.
您正在检索所有记录,因此您的记录格式正确。 您不需要该数组中的多条记录吗?如果是这样,您只能检索单行。否则你可以使用 foreach 循环:
foreach($periods as $p) {
echo $p->max_date;
echo $p->count_days;
}