我有Workposition模型。它在数据库中与具有belongsTo关系的Orders链接。因此,我需要找到与Orders模型相关的条件的特定工作位置。所以,当我使用例如suck类的发现:
$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'on子句'中的未知列'Array'(数组转换为字符串)。因此,当find方法看到Order时,它没有找不到我的id数组,而它没有绑定Order模型就找不到它。
答案 0 :(得分:0)
连接条件必须是数组值,而不是key =>值。
尝试更改行
'OrdergroupsOrder.ordergroup_id' => $ordergroup_ids,
到
'OrdergroupsOrder.ordergroup_id = $ordergroup_ids',
$ ordergroup_ids是一个数组?尝试使用单个ID。