cakephp中飞行绑定模型的第3级

时间:2014-11-12 08:12:33

标签: cakephp

我正在尝试将2级模型绑定到我的(用户hasmany评论,评论hasmany标签)即时。我试过这个但是不行。也没有找到任何可以在这里或通过谷歌工作。

$this->User->bindModel(array(
        'hasMany' => array(
            'Comment' => array(
                'classname' => 'Comment',
                'hasMany' => array(
                    'Tag' => array(
                        'classname' => 'Tag'
                    )
                )
            ) 
        ) 
    ));

还有其他想法吗?

我正在使用Cakephp 2.5.1

2 个答案:

答案 0 :(得分:2)

$this->User->bindModel(array(
        'hasMany' => array(
            'Comment' => array(
                'foreignKey' => false,
                'conditions' => array('User.id = Comment.user_id')
            ))));       

之后:

$this->User->Comment->bindModel(...)

但是使用Containable Behaviors,你会真正发展得更快,并且可以将Tag与你的评论模型绑定,并且使用"包含"见:http://book.cakephp.org/2.0/fr/core-libraries/behaviors/containable.html

答案 1 :(得分:1)

使用

$this->User->bindModel(array(
        'hasMany' => array(
            'Comment' => array(
                'foreignKey' => false,
                'conditions' => array('User.id = Comment.user_id')
            ),
            'Tag' => array(
                'foreignKey' => false,
                'conditions' => array('Comment.id = Tag.comment_id')
            )
        )
    )
);

请注意,我们将外键设置为false,并强制加入JOIN条件。

<强>更新

@MrSmith您在Models.In中使用正确的hasMany关联。用户模型使用hasMany Comment。在注释模型中使用hasMany Tag。如果它不能通过自定义Solution解决,你不需要在这里有飞行关系。无论你不需要这种关系,在飞行中使用unbind模型。获取?要聪明。