Понимание 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
)
)
)