Я пытаюсь соединить две таблицы и нашел этот пост о том, как это сделать с помощью контейнеров. .
Таблицы, к которым я пытаюсь присоединиться, — это заказы и order_items. Вот код в моем контроллере Order и Order_Item
Class OrderItem extends AppModel {
public $useTable = 'order_items';
public $actsAs = array('Containable');
public $belongsTo = array('Order');
}
class Order extends AppModel {
public $actsAs = array('Containable');
public $hasMany = array('OrderItem');
}
Вот запрос в OrdersController
$order_list = $this->Order->find('all', array(
'contain' => array('OrderItem'),
'conditions' => array(
'Order.order_status' => 'filled',
'OrderItem.item_status' => 'filled'
)
));
Прямо сейчас он не запрашивает таблицу order_items. Я получаю следующую ошибку
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Order_Item.item_status' in 'where clause'
После дальнейшего изучения запрос даже не ищет таблицу order_items, а только таблицу заказов. Я предполагаю, что это правда, потому что он не нашел столбец, который я указал в условиях.
Вот результирующий запрос
SQL Query: SELECT `Order`.`id`, `Order`.`userid`, `Order`.`order_status`, `Order`.`email`,
`Order`.`total`, `Order`.`fullName`, `Order`.`address`, `Order`.`city`, `Order`.`state`,
`Order`.`zip`, `Order`.`created`, `Order`.`modified` FROM `ordersdb`.`orders` AS `Order`
WHERE `Order`.`order_status` = 'filled' AND `OrderItem`.`item_status` = 'filled'