Как показать вложенное значение ассоциации cakephp 3
Я хочу запустить этот код, где он имеет вложенные данные ассоциации:
'VhpProducts.VhpHasilPencapaian',
'Departments.VhpHasilPencapaian',
'Groups.VhpHasilPencapaian' and to sum 'VhpHasilPencapaian.quantity'
но все, что я получил, было
Ошибка: SQLSTATE[42S22]: столбец не найден: 1054 Неизвестный столбец "VhpHasilPencapaian.amount" в "списке полей"
$vhpCriteria = $this->VhpCriterias->find('all', [
'contain' => [
'VhpProducts.VhpHasilPencapaian',
'Departments.VhpHasilPencapaian',
'Groups.VhpHasilPencapaian'
],
'field' => ['VhpProducts.name']
]);
$vhpCriteria->select([
'product' => 'VhpProducts.name',
'amountTotal' => $vhpHasilPencapaian->func()->sum('VhpHasilPencapaian.amount'),
'qty' => $vhpHasilPencapaian->func()->sum('VhpHasilPencapaian.quantity'),
]);
2 ответа
"Вложенные" ассоциации должны быть записаны так:
$users = $this
->Users
->find('all')
->contain([
'Roles' => [
'Rights'
],
'Posts' => [
'Comments' => [
'Replies' => function($query) {
return $query
->where(['public' => 1]);
}
]
]
])
->toArray();
Вам нужно выбрать все данные, которые вы собираетесь использовать. Ваше поле должно быть полями и включать ВСЕ поля, которые вы хотите вернуть. В качестве альтернативы вы можете полностью исключить это, чтобы вернуть все. Если у вас нет поля, указанного в опции полей, вы не получите его и не сможете его использовать.
$vhpCriteria = $this->VhpCriterias->find('all', [
'contain' => [
'VhpProducts.VhpHasilPencapaian',
'Departments.VhpHasilPencapaian',
'Groups.VhpHasilPencapaian'
],
'fields' => ['VhpProducts.name', 'ALL OTHER FIELDS']
]);
$vhpCriteria->select([
'product' => 'VhpProducts.name',
'amountTotal' => $vhpHasilPencapaian->func()->sum('VhpHasilPencapaian.amount'),
'qty' => $vhpHasilPencapaian->func()->sum('VhpHasilPencapaian.quantity'),
]);