я хочу запустить этот код, где он имеет вложенные данные ассоциации:
'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'),
]);
«Вложенные» ассоциации должны быть записаны так:
$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'),
]);