Eloquent WHERE LIKE子句,包含多列

时间:2017-02-08 18:37:45

标签: laravel eloquent

我正在实施一个搜索栏,可以按名字,姓氏或两者搜索客户。因此,例如,Mike Hizer将匹配MikeHizerzerMike Hizer等。以下是我提出的建议:

Customer::where(
    DB::raw('concat(first_name," ",last_name)'), 'like', "%{$request->search}%"
)->get()

有效。但是有没有一种更有说服力的方法来组合这两个列(first_namelast_name)而不诉诸DB外观?会像

->where(['first_name','last_name'], 'like', "%{$request->search}%")

可以实现吗?

2 个答案:

答案 0 :(得分:4)

如果您不想使用DB外观,可以使用whereRaw方法:

Customer::whereRaw('concat(first_name," ",last_name) like ?', "%{$request->search}%")->get();

希望这有帮助!

答案 1 :(得分:-1)

$query = User::where('id', '=', '2');

$query->where('first_name', 'LIKE', "%$search%");
$query->or_where('last_name', 'LIKE', "%$search%");
$users = $query->get();

试试这种方式..