2012-06-25 123 views
0

我不確定是否我做的不好,或者這實際上是Cake的預期行爲。Cakephp 2 Containable沒有正確過濾

下面是我的代碼:

$tickets = $this->TicketsPrice->Ticket->find('all',array(
    'contain'=> array(     
     'TicketsType' => array(
        'conditions' => array(
         'provider_id' => $provider_id, 
        ), 
       ), 
      ), 
     ) 
    ); 

而這就是我得到:

Array 
(
    [0] => Array 
     (
      [Ticket] => Array 
       (
        [id] => 17 
        [name] => Telecabina 
        [tickets_type_id] => 9 
       ) 

      [TicketsType] => Array 
       (
        [id] => 9 
        [provider_id] => 5 
        [name] => Name 
       ) 

     ) 

    [1] => Array 
     (
      [Ticket] => Array 
       (
        [id] => 16 
        [name] => Pase General 
        [tickets_type_id] => 8 
       ) 

      [TicketsType] => Array 
       (
        [id] => 8 
        [provider_id] => 5 
        [name] => Name 
       ) 

     ) 


    [4] => Array 
     (
      [Ticket] => Array 
       (
        [id] => 13 
        [name] => Pase fin de semana 
        [tickets_type_id] => 7 
       ) 

      [TicketsType] => Array 
       (
        [id] => 
        [provider_id] => 
        [name] => 
       ) 

     ) 

我不應該在陣列中得到4票。相反,由於provider_id不匹配,我得到一個空的TicketsType數組。這是預期的結果嗎?

回答

0

我意識到條件實際上是過濾好,但我不知道如何實現整個數組相同的過濾器,而不僅僅是包含模型的子數組。

我可以通過執行foreach和檢查空id來做到這一點,但不知道如何直接在find函數中進行操作,就像使用where SQL條件一樣。