Php Laravel雄辩的查询使用一组条件或另一组条件以及一些常见条件?
我必须在我的Laravel项目中执行sql操作 除了上述条件外,我还有一些共同条件。我知道如何用原始mysql编写它 比如说 我需要的是Php Laravel雄辩的查询使用一组条件或另一组条件以及一些常见条件?,php,mysql,laravel,eloquent,laravel-query-builder,Php,Mysql,Laravel,Eloquent,Laravel Query Builder,我必须在我的Laravel项目中执行sql操作 除了上述条件外,我还有一些共同条件。我知道如何用原始mysql编写它 比如说 我需要的是 我如何使用laravel查询格式来表示条件X和条件Y以及((a=1和b=1)或(c=1和d=1)) DB::table('yourTable') ->where('x', '=', '1') ->where('y', '=', '1') ->where(function($q1) { $q1-&
我如何使用laravel查询格式来表示条件X和条件Y以及((a=1和b=1)或(c=1和d=1))
DB::table('yourTable')
->where('x', '=', '1')
->where('y', '=', '1')
->where(function($q1)
{
$q1->where(function($q2)
{
$q2->where('a', '=', '1')
->where('b', '=', '1');
})
->orWhere(function($q2)
{
$q2->where('c', '=', '1')
->where('d', '=', '1');
});
});
如果您更喜欢可读性更强的语法,其中
将接受数组作为参数
DB::table('yourTable')
->where('x','=',1)
->where('y','=',1)
->where(function($queryBuilder){
$queryBuilder->where([
['a','=',1],
['b','=',1],
])
->orWhere([
['c','=',1],
['d','=',1],
]);
});
您需要使用闭包将它们单独分组
orWhere()
用于外部查询,而where()
用于内部查询
$a = 1;
$b = 1;
$c = 1;
$d = 1;
Model::where(function($query) use ($a, $b) {
$query->where("a", $a)
->where("b", $b);
})
->orWhere(function($query) use ($c, $d) {
$query->where("c", $c)
->where("d", $d);
});
如果您没有模型,可以将model::
替换为DB::table(“myTable”)
您可以使用
toSql()
查看最终查询 您可以使用本文档了解有关如何在Laravel中构建查询的更多信息。where方法可以接受一个匿名函数,并在其中根据条件E和条件F对其进行分组,这两个条件在所有情况下都是通用的。如何实现它呢?请编辑您的问题并向我们展示真正的问题。
$a = 1;
$b = 1;
$c = 1;
$d = 1;
Model::where(function($query) use ($a, $b) {
$query->where("a", $a)
->where("b", $b);
})
->orWhere(function($query) use ($c, $d) {
$query->where("c", $c)
->where("d", $d);
});