У меня есть таблица с несколькими столбцами, сгенерированными из запроса 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(?);
}
}