2013-12-18 2 views
1

Я хочу установить $ options ['contains'], чтобы включить все ассоциированные модели верхнего уровня (но не ассоциации второй степени). Я знаю, что могу просто перечислить каждую модель ...CakePHP: Как содержать все ассоциации верхнего уровня

$this->Object->find('all', array('contain'=>array('Model1', 'Model2', ... 

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

Я думаю, что я помню старые версии CakePHP, позволяющие что-то вроде ...

$this->Object->find('all', array('contain'=>array('*') 

Но до сих пор (на v2.4) не похоже на работу.

После повторного чтения the documentation это звучит так, как будто я хочу должен по умолчанию. Но это не так.

ответ

2

Что вы ищете, это атрибут модели recursive.

http://book.cakephp.org/2.0/en/models/model-attributes.html#recursive

Установка его уровня 0 будет тянуть один уровень ассоциаций.

Контейнер предназначен для тех случаев, когда вы хотите указать, какие модели и почти всегда рекомендуется использовать с использованием рекурсивных, НО - в вашем случае потянуть «все» модели, связанные с верхним уровнем, будут выполнены с рекурсивным отсутствием необходимости в Containable ,

Рекурсивный, по умолчанию установлен на 1, однако я слышал в будущих версиях Cake, рекурсивный будет уходить (хорошее избавление). Большинство людей установили public $recursive = -1; в своем AppModel, чтобы по умолчанию его отключить.

+0

Спасибо Дэйв. Разрешен ли «рекурсивный» в качестве ключа в массиве $ options для поиска? Знаете ли вы, что он будет превзойти «содержать», если он установлен где-то еще вверх по течению? – emersonthis

+0

В соответствии с [документацией по поиску()] (http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#find) вы можете установить рекурсивную систему для каждого поиска. Однако, если вы используете Containable Behavior, вы должны настроить рекурсивную на -1. – Dave

+0

Я дал ему выстрел, и он работает! Тем не менее, отношения HABTM включают в себя их «ассоциацию присоединения», даже если «рекурсивный» установлен в 1. Ожидается ли это? – emersonthis

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