2013-12-03 2 views
0

это хорошо или плохо практика в CakePHP, чтобы иметь условия, установленные в contain находки запроса, как:условия содержат CakePHP найти

$data = $this->SomeModel->find('all', array(
    'contain' => array(
     'AnotherModel' => array(
      'conditions' => array(
       // some conditions 
      ) 
     ) 
    ) 
)); 

В каких случаях поставить условия внутри содержат быть полезным, и когда следует использовать его или нет. Извините, это все еще запутывает меня.

Спасибо

ответ

0

Я не уверен, является ли это хорошая идея ... Прежде всего, я буду считать, что этот конкретный случай требует указать условия, которые уникальны для данного случая, т.е. не достаточно общего для вас, чтобы ввести в свои критерии отношения модели SomeModel к AnotherModel.

Мои предложения состоят в том, что вы должны поместить эти условия в свои общие условия поиска, а также указать, какие связанные модели возвращаются (управляя соединениями под капотом). Как и в SQL, вы можете присоединиться к другой таблице и указать, какие записи должны совпадать в вашем предложении WHERE.

From the manual, вы можете указать условия в вашем содержат, но они не будут влиять на результаты, которые не присоединиться к вашей модели, как общие условия будут.

Я хотел бы сделать это:

$data = $this->SomeModel->find('all', array(
    'contain' => array('AnotherModel'), 
    'conditions' => array(
     // some conditions relating to AnotherModel 
    ) 
)); 
+0

Этот способ возвращает ошибку, если вы поставите условие для присоединения таблицы. Ex: 'conditions' => array ( 'AnotherModel.active' => 1 ) – Sadee