Laravel Красноречивый запрос модели - PullRequest
0 голосов
/ 03 февраля 2020

Я хочу получить правильный запрос в laravel, если кто-то может помочь

У меня есть этот запрос

SELECT * FROM `users` WHERE ((`is_verified` = 1) AND (`first_name` like '%%' or `middle_name` like '%%' or `last_name` like '%%' or `email` like '%%'))

, и у меня есть это в моем коде

$user->where([
                ['is_verified', '=', 1]
            ])
                ->where('first_name', 'like', "%$search%")
                ->orWhere('middle_name', 'like', "%$search%")
                ->orWhere('last_name', 'like', "%$search%")
                ->orWhere('email', 'like', "%$search%");

но он производит

SELECT * FROM `users` WHERE ((`is_verified` = '1') and `first_name` like '%%' or `middle_name` like '%%' or `last_name` like '%%' or `email` like '%%') 

Ответы [ 2 ]

2 голосов
/ 03 февраля 2020

Вы должны использовать анонимную функцию в предложении "closure-where".

$user->where([
                ['is_verified', '=', 1]
            ])->where(function ($query) use ($search) {
                $query->where('first_name', 'like', "%$search%")
                ->orWhere('middle_name', 'like', "%$search%")
                ->orWhere('last_name', 'like', "%$search%")
                ->orWhere('email', 'like', "%$search%");
});
0 голосов
/ 03 февраля 2020

Вы должны использовать анонимную функцию, например, следующий код:

User::where(function ($query){
        $query->where('is_verified', 1);
    })->where(function ($query) use ($search) {
        $query->where('first_name', 'like', "%$search%")
        ->orWhere('middle_name', 'like', "%$search%")
        ->orWhere('middle_name', 'like', "%$search%")
        ->orWhere('email', 'like', "%$search%");
    })->toSql();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...