Mysql
 sql >> Base de données >  >> RDS >> Mysql

Laravel (5.3) Eloquent - Problème relationnel

Vous pouvez essayer en tant que :

// returns array of genre_ids associate with the TheMovies.id => 1

$genre_ids = TheGenres::whereHas('TheMovies', function($q) {
    $q->where('id', 1);
})->pluck('id')->toArray();

Utilisez ensuite ces $genre_ids pour récupérer les films associés en tant que :

TheMovies::whereHas('TheGenres', function($q) use($genre_ids) {
    $q->whereIn('id', $genre_ids);
})->get();

Mettre à jour

En supposant que vous ayez :

$genre_ids = [21, 23];

alors votre requête peut être la suivante :

TheMovies::whereHas('TheGenres', function($q) use($genre_ids) {
    $q->whereIn('genreID', $genre_ids)
        ->groupBy('movieID')
        ->havingRaw('COUNT(DISTINCT genreID) = 2');
})->get();

Remarque :je ne l'ai pas testé, mais vous pouvez l'essayer.