cakephp 3.0中的可包含行为不适用于多级关联

时间:2015-12-14 20:33:30

标签: php cakephp cakephp-3.0

我正在 cakephp2.x 工作大约1。5年,这是好的,现在我把我的自己移到Cakephp 3.x但我面临着获取多层次关联数据的问题,请告诉我我正在写作方式。 现在我的问题是!! 在cakephp 2.x中:我在控制器中使用了多级关联,如此

CommentsController 中: 型号:发表 型号:的注释

帖子 hasMany 评论(我在模型中定义的关系) 评论属于至帖子

$this->Post->Comment->find('all');

此查询也返回评论以及相关帖子,但现在在cakephp 3.x中

$this->Posts->Comments->find();

它只返回了评论但没有相关帖子,但是当我使用像这样的可包含行为时

$this->Post->Comments->find('all',['contain'=>['Posts'] ] )

这次显示错误帖子与评论无关 现在我想知道我错了吗?

3 个答案:

答案 0 :(得分:1)

Cake 3中的表(模型)是复数。听起来你正在寻找这样的事情:

$this->Posts->find()->contain(['Comments']);
// or
$this->Posts->find('all', ['contain' => ['Comments']]);

如果仍然出现错误,请确保已设置关联。

// src/Model/Table/PostsTable.php
public function initialize(array $config)
{
    parent::initialize($config);
    $this->hasMany('Comments');
}

答案 1 :(得分:0)

试试这个,我认为这会有帮助

$this->Posts->find('all')->contain(['Comments']);

答案 2 :(得分:0)

尝试 cakephp 3.x

$this->Posts->Comments->find()->contain(['Posts'])->all();

OR

$this->Posts->Comments->find()->contain(['Posts'])->toArray();

在尝试之前,请确保您的模型关系hasMany且belongsTo必须正确。