Laravel Eloquent or 和 and 复合语句
作者: 李茂琦
日期: 08 Oct 2016
在Laravel中使用Eloquent 时,可能需要使用如下的where语句:
select * from foo where (a1 = 1 or a2 = 2) and (b1 = 1 or b2 = 2);
我们可以使用如下复杂的where语句来实现:
Foo::where(function($query){
$query->where("a1",1)
->orWhere("a2",2);
})->where(function($query){
$query->where("b1",1)
->orWhere("b2",2);
});
数值1和2可能希望通过变了传入,这样的话,你可以使用 function() use($param1,$param2,...){} 的方式把变量$param1 $param2 … 传入闭包中,如下:
$param1 = 1;
$param2 = 2;
Foo::where(function($query) use($param1, $param2){
$query->where("a1",$param1)
->orWhere("a2",$param2);
})->where(function($query) use($param1, $param2){
$query->where("b1",$param1)
->orWhere("b2",$param2);
});
更多复杂的where的复杂语句请参考Laravel的 Advanced Where Clauses