我正在为搜索用户创建一个api。我在Eloquent中这样做,我想知道是否有任何方法可以像这样使用Eloquent创建查询:
SELECT * FROM users WHERE CONCAT('first_name', ' ', 'last_name') LIKE '%searchstring%' OR email LIKE '%searchstring%';
有没有办法使用Eloquent查询构建器执行此操作?
我想做的基本上是这样的:
$users = User::where('CONCAT(first_name, " ",last_name)', 'LIKE', '%searchstring%')->orWhere('email','LIKE','%searchstring%')->orderBy($ob, $dir)->paginate($perPage);
这导致Column not found: 1054 Unknown column 'CONCAT(first_name," ",last_name)' in 'where clause'
答案 0 :(得分:0)
我能够找到这个问题的答案,解决方案是在列名周围使用DB::raw
方法。
工作解决方案如下所示:
$users = User::where(DB::raw('CONCAT(first_name, " ",last_name)'), 'LIKE', '%searchstring%')->orWhere('email','LIKE','%searchstring%')->orderBy($ob, $dir)->paginate($perPage);
答案 1 :(得分:0)
试试这个:
$users = User::where(\DB::raw('CONCAT(first_name, " ",last_name)'), 'LIKE', '%searchstring%')->orWhere('email','LIKE','%searchstring%')->orderBy($ob, $dir)->paginate($perPage);