cakephp中的3级动态绑定模型

cakephp中的3级动态绑定模型,cakephp,Cakephp,我正在尝试动态地将两个级别的模型绑定到我的模型(用户有许多注释,注释有许多标记)。我试过了,但没用。在这里或通过谷歌也找不到任何有用的东西 $this->User->bindModel(array( 'hasMany' => array( 'Comment' => array( 'classname' => 'Comment', 'hasMany' => a

我正在尝试动态地将两个级别的模型绑定到我的模型(用户有许多注释,注释有许多标记)。我试过了,但没用。在这里或通过谷歌也找不到任何有用的东西

$this->User->bindModel(array(
        'hasMany' => array(
            'Comment' => array(
                'classname' => 'Comment',
                'hasMany' => array(
                    'Tag' => array(
                        'classname' => 'Tag'
                    )
                )
            ) 
        ) 
    ));
还有其他想法吗

我正在使用CakePHP2.5.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,并强制连接条件

更新


@MrSmith在模型中使用正确的hasMany关联。在用户模型中使用hasMany注释。在注释模型中使用hasMany标记。如果自定义解决方案不起作用,则不需要动态关系。如果不需要此关系,则使用动态解除绑定模型。获取?聪明点

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

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

但是使用可包含的行为,您的开发速度会更快,并且可以将标签与注释模型绑定,只需使用“包含”即可。请参见:

这对我不起作用。Cakephp不会在生成的SQL语句中加入用户表:“从
db
注释中选择
Comment
作为
Comment
,其中
User
id
=
Comment
用户id
”@MrSmith在模型中使用正确的hasMany关联。在用户模型中使用hasMany注释。在注释模型中使用hasMany标记。如果自定义解决方案不起作用,则不需要动态关系。如果不需要此关系,则使用动态解除绑定模型。获取?聪明点,聪明点?如果您需要更频繁地绑定数据而不是不绑定数据,这将是明智的。否则,您将始终必须检查是否解除了它的绑定。那可不明智。由于我只需要这个绑定一次,所以在$this->User->recursive=2;,它就像一个符咒;!谢谢我知道可包含的行为,但为此,我必须永久绑定我的数据,这正是我不想要的。