2010-11-23 1 views
0

Я хочу получить данные с рекурсивным уровнем 3. Проблема в том, что он добавляет все 8 связанных моделей, но мне нужны данные только из трех моделей данных. Есть ли способ игнорировать некоторые модели или конкретно задавать некоторые модели, но не все. что-то вроде useModel ('Model1', 'Model2')?CakePHP: Как указать модели при извлечении данных?

+0

Быстрая подсказка: искать unbind в руководстве – c0rnh0li0 2010-11-23 00:32:51

+0

Связывать или отвязывать только работает, когда это первый уровень рекурсивный. – Sharj 2010-11-23 02:37:26

ответ

5

Это лучше использовать Containable поведение, которое позволит вам указать найти условия, как это:

$this->Post->find('all', array(
    'contain' => array(
     'Tag', 
     'Comment' => array(
      'User') 
      ) 
     ) 
    ); 

Кроме того, в связи с этим, это хорошо, чтобы установить $ рекурсивной до -1 в вашем AppModel.

class AppModel extends Model { 
    var $recursive = -1; 
    var $actsAs = array('Containable'); 
} 

Это даст вам контроль тоньше вам нужно, и убедитесь, что ваши запросы не раздувают как больше отношений добавляются к моделям с течением времени.