У меня есть следующие 3 таблицы, которые нормированы:Laravel (5,3) Красноречивым - Отношения проблема
`Table: TheMovies`
id | MovieName
---------------------
1 | Zootopia
2 | Moana
3 | Toy Story
`Table: TheGenres`
id | GenreName
---------------------
21 | Action
22 | Animation
23 | Adventure
`Table: mMoviesGenres`
movieID | genreID
---------------------
1 | 21
1 | 23
2 | 22
2 | 21
3 | 23
3 | 21
Как вы можете видеть в таблице 3 фильм имеет несколько жанров, и жанр имеет несколько фильмов.
Я создал модели TheMovies и TheGenres в laravel.
Я убедился, что отношения сделано внутри модели, используя следующий код:
class TheMovies extends Model
{
public function TheGenres() {
return $this->belongsToMany('App\TheGenres', 'mMoviesGenres', 'seriesID', 'genreID');
}
}
class TheGenres extends Model
{
public function TheGenres() {
return $this->belongsToMany('App\TheMovies', 'mMoviesGenres', 'genreID', 'seriesID');
}
}
Я проверил все, и мне удалось отображение списка жанров для конкретного фильма, и я также удался отображение списка фильмов для определенного жанра.
Фактическая проблема заключается в том, что я хочу отображать связанные фильмы для определенного фильма, основанного на жанре.
Давайте возьмем TheMovies.id = 1, который похож на TheMovies.id = 3, они оба Action и Adventure, как вы можете видеть в третьей таблице.
Я выяснил запрос, который необходим на основании следующего сообщения: SQL Query based on other table.
SELECT m2.movieId
FROM mMoviesGenres m1
INNER JOIN mMoviesGenres m2
ON m1.genreID = m2.genreID
WHERE m1.movieId = 1 AND
m2.movieId <> 1
GROUP BY m2.movieId
HAVING COUNT(*) >= 2
Но я не знаю, как превратить этот запрос в стиле красноречив, и да я могу сделать необработанный запрос в красноречивы, но я хочу, чтобы использовать отношения создали.
Пожалуйста, дайте мне совет.
Есть ли способ сделать это, используя 1 запрос, такой как версия mysql? – Coder
Ваш запрос работает нормально, но он ищет не менее 1 ошибки, в моем случае мне нужно как минимум 2. – Coder
Пожалуйста, проверьте обновленный ответ. –