2012-06-25 2 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 и проверив пустой идентификатор, но не уверен, как сделать его непосредственно в функции поиска, точно так же, как вы это сделаете с условием SQL.

Смежные вопросы