Cakephp包含的命令不起作用

时间:2011-09-25 17:56:37

标签: cakephp

我使用cakephp可以检索相关模型

$this->Order->find('first',
      array(
          'conditions'=>$conditions,
          'contain' => 
              array(
                 'OrderItem'=>array(
                     'Item'=>
                         array(
                            'order' => array('Item.item_number ASC')
                          )
                   ), 
             'Location','Campaign', "Customer")     
            )
       );

我正在使用它来生成发票,并希望按item_number排序这些项目。

但出于某种原因,排序无效。

有什么想法吗?

生成的SQL很长。但是你可以从这个片段看到order by在错误查询中的问题 - 即在ID中选择的项目 - 只有一个项目。 (并且订单中的每个项目都有单独的查询。)

  SELECT `OrderItem`.`order_id`, `OrderItem`.`item_id`,
 `OrderItem`.`quantity`,  `OrderItem`.`id` FROM `order_items` AS `OrderItem` WHERE
 `OrderItem`.`order_id` = (3144)

  SELECT `Item`.`id`, `Item`.`campaign_id`, `Item`.`item_number`, `Item`.`description`,
  `Item`.`order_unit`, `Item`.`order_price`, `Item`.`maxQuantity`, `Item`.`sale_unit`,
  `Item`.`sale_price`, `Item`.`approx`, `Item`.`min_weight`, `Item`.`max_weight`,
  `Item`.`avail`, `Item`.`filename` FROM `items` AS `Item` WHERE `Item`.`id` = 122 
 ORDER    BY `Item`.`item_number` ASC

我希望看到第一个查询执行inner join Items.id on OrderItem.item_id并按item_number对该查询进行排序,但我看到containable为每个相关模型生成单独的查询。

2 个答案:

答案 0 :(得分:1)

确保您已添加:

var $actsAs = array('Containable');

到模型,或

$this->Order->Behaviors->attach('Containable');

采取行动。如果你已经有这个,那么你的帖子就不清楚了。

另外你应该详细说明isn't working - 什么不是?出乎意料的结果?什么都没有?

答案 1 :(得分:0)

您可能想尝试使用Linkable:

https://github.com/Terr/linkable