4 回答

TA貢獻1842條經驗 獲得超13個贊
你可以這樣做
Model::where('a', '1')
->where('b', '2')
->where(function ($q) {
$q->where('c', '3')->orWhere('c', '4');
})
->where(function ($q) {
$q->where('d', '5')->orWhere('d', '5');
})->get();

TA貢獻2051條經驗 獲得超10個贊
如果我收到您的問題,那么這張收據適合您:
$result = DB::table('table')
->where('a', 1)
->where('b', 2)
->where(function($query) {
$query->where('c', 3)
->orWhere('c', 4)
})
->where(function($query) {
$query->where('d', 5)
->orWhere('d', 6)
->get();

TA貢獻1801條經驗 獲得超16個贊
像這樣的事情應該可以解決問題:
Model::where([
['a', '=', 1],
['b', '=', 2],
[['c', '=', 3], 'OR', ['c', '=', 4]],
[['d', '=', 5], 'OR', ['d', '=', 6]]
]);

TA貢獻1811條經驗 獲得超6個贊
既然你已經改進了你的問題。以下是實現這一目標的方法。
沒有測試過。像這樣的事情怎么樣?
$ands = [['a', '=', 1], ['b', '=', 2], ...];
$query = Model::query();
foreach($and as $and) {
$query = $query->where($and);
}
if($cond1) $ors['c'] = [3, 4, ...];
if($cond2) $ors['d'] = [5, 6, ...];
if($cond3) $ors['e'] = [7, 8, ...];
...
foreach($ors as $key => $or) {
$query = $query->where(function($q) use ($key, $or) {
$q->whereIn($key,$or);
});
}
$query->get();
- 4 回答
- 0 關注
- 337 瀏覽
添加回答
舉報