Найти по условиям связанной модели в CakePHP 3
У меня две таблицы orders
а также sub_orders
, Их ассоциация
$orders->hasMany('SubOrders', [
'foreignKey' => 'order_id'
]);
Обе таблицы имеют invoice_no
а также sub_invoice
столбцы в orders
а также sub_orders
соответственно.
Я должен найти записи из orders
таблица, содержащая связанные sub_orders
где $trackingId
будет соответствовать либо Orders.invoice_no
или же SubOrders.sub_invoice
$findOrder = $this->Orders->find('all', [
'conditions' => [
'OR' => [
'Orders.invoice_no' => $trackingId,
'SubOrders.sub_invoice' => $trackingId
]
],
'contain' => [
'SubOrders'
]
]);
Но это дает ошибку
Column not found: 1054 Unknown column 'SubOrders.sub_invoice' in 'where clause'
1 ответ
Решение
Попробуйте выполнить запрос следующим образом:
$findOrder = $this->Orders->find()
->where(['Orders.invoice_no' => $trackingId])
->contain(['SubOrders' => function ($q) use ($trackingId) {
return $q
->where(['SubOrders.sub_invoice' => $trackingId]);
}
]);