Поиск, где имя concat после select в запросе MySQL - PullRequest
0 голосов
/ 25 марта 2019

У меня есть таблица с несколькими столбцами, сгенерированными из запроса MySQL. Один объединяется с использованием concat 'first_name' и 'last_name', что делает столбец 'username'. Все столбцы могут быть индивидуально отфильтрованы.

Поэтому мне было интересно, можно ли отфильтровать значение concat после того, как оно было выбрано в запросе. Так что-то вроде ...

->selectRaw('CONCAT(first_name, " ", last_name) AS username')
->where('username', 'LIKE', '%search_username%')

Я понимаю, что мог бы сделать что-то вроде.

->where(DB::raw("CONCAT(first_name, " ", last_name) LIKE '%search_username%")

Но я сделал цикл, который проходит по всем столбцам поиска и различает имя столбца или concat значение.

foreach ($search->filters as $key => $value) {
    // Check for column search
    if($value->type === 'column'){
         $query->where($value->name, 'LIKE', "%{$value->text}%");
    }
    // Check for concat search
    if($value->type === 'concat'){
         $query->where(?);
    }
}
...