我想设置$ options ['contains'],以便包含所有顶级关联模型(但不包括第二度关联)。我知道我可以简单列出每一个模型......
$this->Object->find('all', array('contain'=>array('Model1', 'Model2', ...
但这不是我想要的,因为将来可能会关联其他模型,我希望它们能够自动包含在内。
我想我记得旧版本的CakePHP允许类似......
$this->Object->find('all', array('contain'=>array('*')
但到目前为止(在v2.4上)它似乎不起作用。
重新阅读the documentation后,听起来像我想要的应该默认发生。但事实并非如此。
答案 0 :(得分:2)
您要找的是模型属性recursive
。
http://book.cakephp.org/2.0/en/models/model-attributes.html#recursive
将其设置为级别0
将提升一级关联。
可以包含当您想要指定哪些模型并且几乎总是建议使用递归时,但是 - 在您的情况下拉动“所有”顶级关联模型将是递归完成而根本不需要包含。
递归是默认设置为1
,但是我在将来的Cake版本中听说过,递归将会消失(很好的解决)。大多数人在他们的AppModel中设置public $recursive = -1;
以将其默认为“关闭”。