Я хочу получить данные из базы данных с помощью Laravel, используя несколько условий. Запрос должен искать разные условия в одних и тех же столбцах и получать результат.
Таблица выглядит так
Я хочу получить данные, в которых категория позиции может быть либо «Все», либо «для конкретного пользователя», а пол может быть «все» или «для конкретного пользователя». Значения позиции и пола пользователя можно получить из данных вошедшего в систему пользователя. Если позиция пользователя «Постоянная», а пол — «Мужской», результаты должны выглядеть так:
Мне нужен запрос, чтобы получить результат.
Данные должны поступать только из одной таблицы, поэтому соединение не требуется.
это все и пользовательский фильтр, поступающий из запроса?
Отвечает ли это на ваш вопрос? Laravel с использованием ГДЕ или ГДЕ
Пожалуйста, добавьте код, который вы пробовали, в свой вопрос. Это хорошо документировано.






Вы можете использовать Eloquent ORM для создания запроса с несколькими условиями. Итак, сначала получите подробную информацию о вошедшем в систему пользователе, используя Auth, и передайте параметры в условие. Проверьте код ниже.
use App\Models\Item;
use Illuminate\Support\Facades\Auth;
$userPosition = Auth::user()->position;
$userGender = Auth::user()->gender;
$items = Item::where(function($query) use ($userPosition) {
$query->where('position', 'All')
->orWhere('position', $userPosition);
})
->where(function($query) use ($userGender) {
$query->where('gender', 'All')
->orWhere('gender', $userGender);
})
->get();
Это решило проблему, с которой я столкнулся. Код пришел как спасение.
Вы можете использовать whereIn() :
$items = Item::whereIn('position', ['All', $userPosition])
->whereIn('gender', ['All', $userGender])
->get();
который выдаст следующий подготовленный оператор:
select * from `items` where `position` in (?, ?) and `gender` in (?, ?)
а затем выполните его с предоставленными значениями - ['All', 'Permanent', 'All', 'Male']
Собираетесь ли вы присоединиться самостоятельно? если нет, то поделитесь именем двух таблиц и сообщите, какие столбцы между этими таблицами связаны?