CakePHP如何在一个字段上自动包含第三级关系?

时间:2013-01-06 04:38:58

标签: php cakephp

简而言之,Users有许多Posts,它们属于许多Tags

此外,Users有许多Recipes,其中包含许多Ingredients

$this->User->find('all'); // Yields one level, no associated Tags or Ingredients.

添加:

$this->User->find('all', array('recursive' => 2); // Yields two levels, all Tags and Ingredients

如果我只想递归一个字段,即Recipe,那么我得到所有的Ingredients怎么办?

看来我想使用contain行为,但这似乎没有效果。如果我删除recursive行为,我只会得到一个级别的数据。

我的模型中也包含此内容。

public $actsAs = array('Containable');

1 个答案:

答案 0 :(得分:0)

您可以使用Containable行为,如下所示。

$this->User->find('all', array('contain' => 'Ingredient'));

虽然您已经使用过recursive,但如果您想删除所有帖子数据,快速解决方案就是unbind您的帖子模型,如下所示。

$this->User->unbindModel(
    array('hasMany' => array('Post'))
);
$this->User->find('all', array('recursive' => 2);