我怎么说WHERE (a =1 OR b =1) AND (c =1 OR d =1)
对于更复杂的查询,我应该使用原始SQL吗?
我怎么说WHERE (a =1 OR b =1) AND (c =1 OR d =1)
对于更复杂的查询,我应该使用原始SQL吗?
当前回答
你可以使用:
Model::where('table_column', 'value')->orWhere('table_column', 'value')->get()
其他回答
$a, $b, $c, $d可以是查询的动态值
->where(function($query) use ($a, $b)
{
$query->where('a', $a)
->orWhere('b',$b);
})
->where(function($query) use ($c, $d)
{
$query->where('c', $c)
->orWhere('d',$d);
})
你可以使用:
Model::where('table_column', 'value')->orWhere('table_column', 'value')->get()
您还可以查询第一个或条件,然后可以应用另一个或条件
$model = Model::where('a',1)->orWhere('b',1);
现在对$model变量应用另一个条件
$model1 = $model->where('c',1)->orWhere('d',1)->get();
使用逻辑分组(Laravel 7.x/4.2)。在你的例子中,它是这样的:
Model::where(function ($query) {
$query->where('a', '=', 1)
->orWhere('b', '=', 1);
})->where(function ($query) {
$query->where('c', '=', 1)
->orWhere('d', '=', 1);
});
另一种不使用Modal的方法
数据库:股票 列:id、名称、company_name exchange_name,地位
$name ='aa'
$stocks = DB::table('stocks')
->select('name', 'company_name', 'exchange_name')
->where(function($query) use ($name) {
$query->where('name', 'like', '%' . $name . '%')
->orWhere('company_name', 'like', '%' . $name . '%');
})
->Where('status', '=', 1)
->limit(20)
->get();