Понимание CakePHP имеет AndBelongsToMany

Я пытаюсь получить все отзывы о фильме с моделью пользователя. Я следую 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
                        )

                )

        )

)

Я также хочу получить пользовательскую модель также. Итак, я могу отображать имя пользователя и другую информацию. кто опубликовал этот обзор

3 ответа

Решение

Если я прав, ваша реляционная схема должна выглядеть так:

Обзор -> BelongsTo -> Пользователь и обзор -> BelongsTo Также для -> Фильм

поэтому лучше всего создать новую таблицу ReviewUser с именем hasMany through (модель соединения) следующим образом:

id
user_id
movie_id
etc...

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

NB: это хороший метод, когда вам нужно хранить больше информации о встраивании в ассоциативную таблицу.

так что теперь вы можете выбрать рецензии с условным оператором ФОРМА рецензии ГДЕ user_id = xxx

см.: http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html

Вам просто нужно определить другое отношение в модели обзора.

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
            )

    )

)

я хочу это вернуть

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

['User'] => массив (пользовательский массив здесь)

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

    )

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

    )

)

Другие вопросы по тегам