理解cakephp的hasandbelongtomy

理解cakephp的hasandbelongtomy,php,cakephp,has-and-belongs-to-many,Php,Cakephp,Has And Belongs To Many,我正在尝试用用户模型检索电影的所有评论。我正在学习教程 $movie = $this->Movie->read(null, $id); 它返回到结构之下 Array ( [Movie] => Array ( [id] => 1 [title] => movie1 [release_date] => 2014-04-10 00:00:00 [

我正在尝试用用户模型检索电影的所有评论。我正在学习教程

$movie = $this->Movie->read(null, $id);
它返回到结构之下

Array
(
    [Movie] => Array
        (
            [id] => 1
            [title] => movie1
            [release_date] => 2014-04-10 00:00:00
            [director_id] => 1
        )
    [Director] => Array
        (
            [id] => 1
            [first_name] => direct
            [last_name] => direc
        )

    [Review] => Array
        (
            [0] => Array
                (
                    [id] => 2
                    [user_id] => 1
                    [body_text] => body_text 22 body_text
                    [ReviewsMovie] => Array
                        (
                            [id] => 1
                            [movie_id] => 1
                            [review_id] => 2
                        )

                )

            [1] => Array
                (
                    [id] => 1
                    [user_id] => 1
                    [body_text] => s body_textbody_text
                    [ReviewsMovie] => Array
                        (
                            [id] => 2
                            [movie_id] => 1
                            [review_id] => 1
                        )

                )

        )

)

我还想检索用户模型。所以,我可以显示用户名和其他信息。谁发布了这篇评论

如果我是对的,那么您的关系方案应该如下所示:

id
user_id
movie_id
etc...

ReviewUser-> belongsto -> (User, Movie)
User-> hasMany -> ReviewUser
Movie-> hasMany -> ReviewUser
查看->目录->用户 和回顾->属于->电影

因此,最佳实践是创建一个名为 “hasMany-through(连接模型)”如下所示:

id
user_id
movie_id
etc...

ReviewUser-> belongsto -> (User, Movie)
User-> hasMany -> ReviewUser
Movie-> hasMany -> ReviewUser
注意:当您需要在关联表中存储更多嵌入信息时,这是一种很好的技术

因此,您现在可以使用条件语句表单reviews选择reviews,其中user_id=xxx


请参阅:

您只需要在审阅模型上定义另一个关系

Review.php 添加此关系-

 public $belongsTo = array('User');
它返回数组 ( [电影]=>阵列 ( [id]=>1 [标题]=>电影 [发布日期]=>2014-04-23 00:00:00 [导演id]=>1 )

)

我要它回来

排列 ( [电影]=>阵列 ( [id]=>1 [标题]=>电影 [发布日期]=>2014-04-23 00:00:00 [导演id]=>1 )

['User']=>数组(此处为用户数组)


)

在下面的示例中,我看不到任何用户表及其与其他表的关系。我想你是指发布评论的用户。那么一个评论属于一个用户,而一个用户有很多评论我想添加Containable,我该怎么做?
[Director] => Array
    (
        [id] => 1
        [first_name] => direcot
        [last_name] => or
    )

[Review] => Array
    (
        [0] => Array
            (
                [id] => 1
                [user_id] => 1
                [movie_id] => 1
                [author_name] => dsf
                [body_text] => sdas
            )

    )

[UserReview] => Array
    (
        [0] => Array
            (
                [id] => 1
                [user_id] => 1
                [movie_id] => 1
            )

    )