Я создаю небольшой сайт, где пользователи могут получать рекомендации по фильмам на основе своих предпочтений по некоторым атрибутам, таким как жанр, год или время работы. Моя база данных выглядит следующим образом (стрелки показывают отношения «многие ко многим»):
Предполагая, что у меня есть модель для каждой сущности на картинке, как мне найти, какие фильмы я бы порекомендовал пользователю?
То, что вы ищете, может быть достигнуто с помощью whereHas
:
Movies::whereHas('genres.users', function($q) use ($userId){
$q->where('users.id', $userId);
})->whereHas('years.users', function($q) use ($userId){
$q->where('users.id', $userId);
})->whereHas('runtimes.users', function($q) use ($userId){
$q->where('users.id', $userId);
})->get();
Это в основном фильтрует фильмы по вложенным отношениям users
(над тремя другими отношениями)
Других решений пока нет …