目前有一个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构建器。我尝试将Eloquent表单改编为此
$contacts = Contacts::->where('active', '=', '1')
->where(function ($query) {
$query->orWhere('lname', 'LIKE', $searchquery.'%')
->orWhere('lname', 'LIKE', $searchquery.'%')
->orWhere('phone', 'LIKE', '%'.$searchquery);
})
->get();
没有成功,因为它无法识别函数内的$searchquery
。
我错过了什么?
答案 0 :(得分:1)
所以,这就是你要做的事情:
a='2015-09-08 14:38:03';
s=strsplit(a,{'-',':',' '})
x=datenum(cellfun(@str2num,s(1:end)))
请注意,我已经使用了($ searchQuery),因此可以在闭包内使用
答案 1 :(得分:0)
当你使用orWhere
多个where子句时,你需要小心!
orWhere
之后的条款不会影响<{>} orWhere
条款之前的条款,例如where
,{{ 1}},whereHas
,whereDoesntHave
你也必须使用orWhereHas
$searchquery
变量传递给where子句中的函数
use ($searchquery)