CakePHP在查找查询中连接表

时间:2016-11-10 11:30:04

标签: php mysql cakephp cakephp-2.4

我有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模型就找不到它。

1 个答案:

答案 0 :(得分:0)

连接条件必须是数组值,而不是key =>值。

尝试更改行

'OrdergroupsOrder.ordergroup_id' => $ordergroup_ids, 

'OrdergroupsOrder.ordergroup_id = $ordergroup_ids',

$ ordergroup_ids是一个数组?尝试使用单个ID。