我使用以下方式构建查询以进行基本查询。
// e.g. $params = ['id' => 'a', 'name' = 'ken']
foreach ($params as $key => $val) {
$query->where($key, "=", $val);
}
但是,我无法找到以下复杂查询的方法。如何构建查询?
((Key1=A and Key2=B) or (Key1=B and Key2=A)) and Key3=C
如果查询是(A or B) and (C or D)
$query->where(function($query) use($value1, $value2){
$query->where('column1', '=', $value1)->orWhere('column2', '=', $value2)
});
$query->where(function($query) use($value3, $value4){
$query->where('column1', '=', $value3)->orWhere('column2', '=', $value4)
});
答案 0 :(得分:1)
如果您需要((x and y) or (z and v)) and z
where()
and orWhere()
closures
Model::where(function ($q) use ($a, $b) {
$q->where(function($q) use($a, $b){
$q->where('key1', $a)->where('key2', $b);
})
->orWhere(function($q) use($a, $b){
$q->where('key1', $b)->where('key2', $a);
})
})
->where('key3', $c)
->get();