目前有一个Eloquent声明:
$contacts = Contacts::where('lname','LIKE',$searchquery.'%') ->orWhere('fname',$searchquery.'%') ->orWhere('phone','%'.$searchquery) ->where('active','=',1)->get();
它把它视为
select * from contacts where lname like $searchquery+'%' or lname like $searchquery+'%' or lname like $searchquery+'%' and active = 1
我需要的是
select * from contacts where (lname like $searchquery+'%' or lname like $searchquery+'%' or lname like $searchquery+'%') and active = 1
我如何在Eloquent中进行分组?我找到了几个例子,例如:
DB::table('users') ->where('name','John') ->orWhere(function ($query) { $query->where('Votes','>',100) ->where('title','<>','Admin'); }) ->get();
但我只习惯Eloquent,而不是Laravels DB Query构建器.我尝试将Eloquent表单改编成这个
$contacts = Contacts::->where('active','1') ->where(function ($query) { $query->orWhere('lname',$searchquery.'%') ->orWhere('lname',$searchquery.'%') ->orWhere('phone','%'.$searchquery); }) ->get();
没有成功,因为它无法识别函数内的$searchquery.
我错过了什么?
解决方法
所以,这就是你要做的:
DB::table('users')->where(function($query) use ($searchQuery){ $query->where('lname',$searchQuery . '%') ->orWhere('fname',$searchQuery . '%') ->orWhere('phone','%' . $searchquery); }) ->get();
请注意,我已经使用了($searchQuery),因此可以在闭包内使用它
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。