首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CakePHP containable join不搜索附加表

CakePHP containable join不搜索附加表
EN

Stack Overflow用户
提问于 2013-06-14 10:20:23
回答 1查看 766关注 0票数 0

我正在尝试连接两个表,我发现this post使用containables完成了这项工作。

我尝试加入的表是orders和order_items。下面是我的Order和Order_Item控制器中的代码

代码语言:javascript
复制
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中的查询

代码语言:javascript
复制
$order_list = $this->Order->find('all', array(              
                                'contain' => array('OrderItem'),
                                'conditions' => array(
                                'Order.order_status' => 'filled',
                                'OrderItem.item_status' => 'filled'
                                )
                            ));

现在,它似乎不是在查询order_items表。我得到以下错误

代码语言:javascript
复制
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Order_Item.item_status' in 'where clause'

进一步检查,查询甚至没有搜索order_items表,而只是搜索orders表。我假设这是真的,因为它没有找到我在条件中指定的列。

下面是结果查询

代码语言:javascript
复制
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'
EN

回答 1

Stack Overflow用户

发布于 2013-06-14 12:13:32

Containable是对传递给"Contain“键的每个模型进行单独的查询。在本例中,Order表中不存在item_status字段,这就是出现错误的原因。

我认为你必须做这样的事情

代码语言:javascript
复制
 $order_list = $this->Order->find('all', array(              
                        'contain' => 'OrderItem.item_status == filled',                                                                 
                        'conditions' => array(
                        'Order.order_status' => 'filled'
                        )
                    ));

有关更多信息,请参阅食谱http://book.cakephp.org/2.0/en/core-libraries/behaviors/containable.html

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17100148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档