Kei*_*ark 5 php eloquent laravel-5
目前有一个雄辩的说法:
$contacts = Contacts::where('lname','LIKE',$searchquery.'%')
->orWhere('fname','LIKE',$searchquery.'%')
->orWhere('phone','LIKE','%'.$searchquery)
->where('active','=',1)->get();
Run Code Online (Sandbox Code Playgroud)
它正在将其视为
select
*
from
contacts
where
lname like $searchquery+'%'
or lname like $searchquery+'%'
or lname like $searchquery+'%'
and active = 1
Run Code Online (Sandbox Code Playgroud)
我需要的是
select
*
from
contacts
where
(lname like $searchquery+'%'
or lname like $searchquery+'%'
or lname like $searchquery+'%')
and active = 1
Run Code Online (Sandbox Code Playgroud)
如何在 Eloquent 中进行分组?我发现了几个例子,例如:
DB::table('users')
->where('name', '=', 'John')
->orWhere(function ($query) {
$query->where('votes', '>', 100)
->where('title', '<>', 'Admin');
})
->get();
Run Code Online (Sandbox Code Playgroud)
但我只习惯 Eloquent,而不习惯 Laravels DB 查询构建器。我尝试调整 Eloquent 形式来适应这个
$contacts = Contacts::->where('active', '=', '1')
->where(function ($query) {
$query->orWhere('lname', 'LIKE', $searchquery.'%')
->orWhere('lname', 'LIKE', $searchquery.'%')
->orWhere('phone', 'LIKE', '%'.$searchquery);
})
->get();
Run Code Online (Sandbox Code Playgroud)
没有成功,因为它无法识别$searchquery函数内部。
我缺少什么?
小智 4
所以,这就是你必须做的:
DB::table('users')->where(function($query) use ($searchQuery){
$query->where('lname', 'LIKE', $searchQuery . '%')
->orWhere('fname', 'LIKE', $searchQuery . '%')
->orWhere('phone','LIKE', '%' . $searchquery);
})
->get();
Run Code Online (Sandbox Code Playgroud)
请注意,我已经使用了 use ($searchQuery),因此可以在闭包内使用它
| 归档时间: |
|
| 查看次数: |
1660 次 |
| 最近记录: |