Larawel или Где запрос от concat два столбца - PullRequest
1 голос
/ 02 апреля 2020

У меня есть таблица пользователей: id | имя | фамилия при отображении данных пользователей, у меня есть имя фильтра, чтобы пользователь мог искать по имени (имя, фамилия или полное имя); проблема в том, что когда я ввожу его полное имя, это приводит к 0 данным, например: fistname: michael lastname: foobar, когда я ищу «michael» и «foobar», у меня нет проблем, но когда я ищу «michael foobar», он ничего не возвращает

мой код выглядит так:

$dataQuery  = $dataQuery->where(function ($dataQuery) use ($fullname) {
            $dataQuery->where('users.firstname', 'like', '%' . $fullname . '%')
                  ->orWhere('users.lastname', 'like', '%' . $fullname . '%')
                  ->orWhere('CONCAT_WS(" ", `users.firstname`, `users.lastname`)', 'LIKE', '%' . $fullname . '%');
        });

ps: извините за отсутствие английского sh, надеюсь, вы все поймете

1 Ответ

2 голосов
/ 02 апреля 2020

Вы используете mysql встроенную функцию CONCAT_WS, плз используйте DB::raw() для функции:

->orWhere(DB::raw('CONCAT_WS(" ", `users.firstname`, `users.lastname`)'), 'LIKE', '%' . $fullname . '%');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...