CakePHP объединяет таблицы в поиске запроса

У меня есть модель 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.

1

Решение

Условиями соединения должны быть значения массива, а не ключ => значение.

Попробуй поменять строчку

'OrdergroupsOrder.ordergroup_id' => $ordergroup_ids,

в

'OrdergroupsOrder.ordergroup_id = $ordergroup_ids',

$ ordergroup_ids это массив? Попробуйте использовать один идентификатор.

0

Другие решения

Других решений пока нет …