簡體   English   中英

了解cakephp hasAndBelongsToMany

[英]understanding cakephp hasAndBelongsToMany

我試圖用用戶模型檢索所有電影評論。 我正在關注http://joshbenner.me/blog/understanding-cakephp-associations/教程。

$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
                        )

                )

        )

)

我也想檢索用戶模型。 所以,我可以顯示用戶名和其他信息。 發表評論的人

如果我對你的關系方案應該是這樣的:

評論 - > BelongsTo - >用戶和評論 - > BelongsTo也 - >電影

所以最好的做法是創建一個名為“hasMany through(The Join Model)”的新表ReviewUser,如下所示:

id
user_id
movie_id
etc...

ReviewUser-> belongsto -> (User, Movie)
User-> hasMany -> ReviewUser
Movie-> hasMany -> ReviewUser

注意:這是一個很好的技術,你需要在關聯表中存儲更多的嵌入信息。

所以你現在可以用條件語句選擇評論FORM review WHERE user_id = xxx

請參閱: http//book.cakephp.org/2.0/en/models/associations-linking-models-together.html

您只需要在Review模型上定義另一個關系。

Review.php

添加這種關系 -

 public $belongsTo = array('User');

它返回Array([Movie] => Array([id] => 1 [title] => movie [release_date] => 2014-04-23 00:00:00 [director_id] => 1)

[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
            )

    )

我希望它回來

數組([電影] =>數組([id] => 1 [標題] =>電影[release_date] => 2014-04-23 00:00:00 [director_id] => 1)

[Director] => Array
    (
        [id] => 1
        [first_name] => direcot
        [last_name] => or
    )

[Review] => Array
    (
        [0] => Array
            (
                [id] => 1
                [user_id] => 1

['User'] => array(此處為用戶數組)

                [movie_id] => 1
                [author_name] => dsf
                [body_text] => sdas
            )

    )

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

    )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM