Мне нужно искать жанр демо.
Примечание: я скрыл другой поиск дрожания краткости.
Фон:
Таблицы:
- Пользователи [id, name,...]
- Демонстрации [id, name, user_id]
- Жанры [id, name]
- demo_genre (сводная таблица) [demo_id, genre_id]
Код
$user = (new User)->newQuery();
$user->with(['demos' =>function($query) {
$query->whereHas('genres', function ($query) {
$query->whereIn('genre_id',[2,3,4]);
});
}]);
$user->paginate();
Примечание : приведенный выше код работает, если в результатах поиска есть данные.Но возвращает пустой массив демонстраций, если жанры не найдены в сводной таблице.
Вопрос : Как удалить результаты, которые не соответствуют заданному условию (то есть: $query->whereIn('genre_id',[2,3,4]);
).И отобразите демонстрации, которые соответствуют условию.
Условия:
- Показать пользователя с демонстрациями [результаты, в которых есть демонстрации с genre_id в (2,3,4))]
- Показывать только демоверсию с genre_id в (2,3,4)
- Не показывать пользователю, если счет домо равен нулю