CakePHP:如何包含所有顶级关联

时间:2013-12-18 19:22:21

标签: php mysql sql cakephp cakephp-2.0

我想设置$ options ['contains'],以便包含所有顶级关联模型(但不包括第二度关联)。我知道我可以简单列出每一个模型......

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

但这不是我想要的,因为将来可能会关联其他模型,我希望它们能够自动包含在内。

我想我记得旧版本的CakePHP允许类似......

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

但到目前为止(在v2.4上)它似乎不起作用。

重新阅读the documentation后,听起来像我想要的应该默认发生。但事实并非如此。

1 个答案:

答案 0 :(得分:2)

您要找的是模型属性recursive

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

将其设置为级别0将提升一级关联。

可以包含当您想要指定哪些模型并且几乎总是建议使用递归时,但是 - 在您的情况下拉动“所有”顶级关联模型将是递归完成而根本不需要包含。

递归是默认设置为1,但是我在将来的Cake版本中听说过,递归将会消失(很好的解决)。大多数人在他们的AppModel中设置public $recursive = -1;以将其默认为“关闭”。