在查询中使用连接列与Eloquent

时间:2017-02-17 08:16:44

标签: php laravel eloquent

我正在为搜索用户创建一个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'

2 个答案:

答案 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);