У меня есть модель Workposition. Он связан в базе данных с заказами с принадлежностью. Итак, мне нужно найти конкретные рабочие места в условиях, связанных с моделью заказов. Итак, когда я использую, например, suck вид find:
$workpositions = $this->Workposition->find('all', array(
'conditions' => array(
'Order.type' => 'N'
)
));
CakePHP понять Order.id
нотации. Но когда я пытаюсь использовать таблицы соединений:
$workpositions = $this->Workposition->find('all', array(
'conditions' => array(
'Order.type' => 'N'
)
'joins' => array(
array('table' => 'ordergroups_orders',
'alias' => 'OrdergroupsOrder',
'type' => 'INNER',
'conditions' => array(
'Order.id = OrdergroupsOrder.order_id',
'OrdergroupsOrder.ordergroup_id' => '3',
)
)
)));
Это дает мне ошибку: Column not found: 1054 Unknown column 'Order.id' in 'on clause'
, Так что не понимает Order.id
нотации. В чем может быть проблема?
Я пытался также сделать что-то вроде этого:
$workpositions = $this->Workposition->find('all', array(
'conditions' => $conditions,
'joins' => array(
array('table' => 'orders',
'alias' => 'Orders',
'type' => 'INNER',
),
array('table' => 'ordergroups_orders',
'alias' => 'OrdergroupsOrder',
'type' => 'INNER',
'conditions' => array(
'Orders.id = OrdergroupsOrder.order_id',
'OrdergroupsOrder.ordergroup_id' => $ordergroup_ids,
)
)
)));
Но я получаю сообщение об ошибке Столбец не найден: 1054 Неизвестный столбец «Массив» в «условии» (преобразование массива в строку). Таким образом, он не понимает мой массив идентификаторов, в то время как он понимает его без привязки модели Order, когда метод find видит Order.
Условиями соединения должны быть значения массива, а не ключ => значение.
Попробуй поменять строчку
'OrdergroupsOrder.ordergroup_id' => $ordergroup_ids,
в
'OrdergroupsOrder.ordergroup_id = $ordergroup_ids',
$ ordergroup_ids это массив? Попробуйте использовать один идентификатор.
Других решений пока нет …