gpt4 book ai didi

php - Eloquent 分组 orWhere

转载 作者:可可西里 更新时间:2023-10-31 23:38:29 26 4
gpt4 key购买 nike

目前有一个 Eloquent 语句:

$contacts = Contacts::where('lname','LIKE',$searchquery.'%')
->orWhere('fname','LIKE',$searchquery.'%')
->orWhere('phone','LIKE','%'.$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 builder。我尝试将 Eloquent 形式适应于此

$contacts = Contacts::->where('active', '=', '1')
->where(function ($query) {
$query->orWhere('lname', 'LIKE', $searchquery.'%')
->orWhere('lname', 'LIKE', $searchquery.'%')
->orWhere('phone', 'LIKE', '%'.$searchquery);
})
->get();

没有成功,因为它无法识别函数内的 $searchquery

我错过了什么?

最佳答案

所以,这是你必须做的:

DB::table('users')->where(function($query) use ($searchQuery){
$query->where('lname', 'LIKE', $searchQuery . '%')
->orWhere('fname', 'LIKE', $searchQuery . '%')
->orWhere('phone','LIKE', '%' . $searchquery);
})
->get();

请注意,我已经使用 ($searchQuery) 以便它可以在闭包内使用

关于php - Eloquent 分组 orWhere,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34190808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com