2011-09-25 24 views
1

我使用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 

我想看到的是第一個查詢由ITEM_NUMBER做inner join Items.id on OrderItem.item_id,並命令查詢,但我看到containable爲每個相關模型生成單獨的查詢。

+0

我結束了剛剛創建usort函數來排序的OrderItems ..... – josephtikva1

回答

1

確保您已經添加:

var $actsAs = array('Containable');

示範,或

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

的行動。從你的文章中不清楚你是否已經有這個。

你也應詳細說明isn't working - 什麼是不?意外的結果?什麼都沒有?

+0

我創建的發票,並希望項目按項目模型中的item_number排序。我得到所有的數據,所以可容納的作品,但OrderItems的排序不按預期工作。我只寫了一個usort函數來排序訂單項......感謝您的輸入..... – josephtikva1

+0

@josephtikva如果設置了遞歸,它將返回額外的模型,所以您可能認爲可容納正在工作,但事實上並非如此。 另外,給我們生成的SQL可能會有幫助,以及模型的完整代碼。 – Ivo

+0

@Ross我在模型中有這個。 – josephtikva1