Когда условие красноречиво со значениями столбца в таблице - PullRequest
0 голосов
/ 22 января 2020

Как я могу условно добавить значение запроса, который я использую, когда функция eloquent laravel?

Вот что я хочу сделать

$user = User::when('logged' == '3', function ($q){
        $q->where('role', 'admin');
        )}->get();

Как видите, я хочу получить роль администратора только тогда, когда столбец logged равен 3, как я могу это сделать? спасибо.

PS

просто пример запроса. спасибо.

Ответы [ 2 ]

1 голос
/ 22 января 2020

Это не то, как , когда работает, первое условие 'logged' == '3' всегда будет возвращать false;

, поэтому он не будет использовать запрос закрытия, напрямую используйте метод get() и вернуть все записи пользователя;

Вам нужно сделать это так:

$user = User::where(function($q) {
    $q->where(['logged' => 3, 'role' => 'admin'])
})->orWhere('logged', '!=', 3)->get();
0 голосов
/ 22 января 2020

Возможно, вы захотите применить оператор where только в том случае, если во входящем запросе присутствует заданное входное значение. Короче говоря, первое условие не основано на поле таблицы, а основано на вашем запросе. Таким образом, ответ @TsaiKoga правильный.

Метод when выполняет заданное замыкание только тогда, когда первый параметр имеет значение true. Если первый параметр имеет значение false, Закрытие не будет выполнено.

Пожалуйста, прочитайте документы здесь когда

...