第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel:如何在 where 子句中混合“and”和“or”條件?

Laravel:如何在 where 子句中混合“and”和“or”條件?

PHP
米脂 2023-09-08 10:15:13
我搜索并發(fā)現(xiàn)了類似的帖子,但沒有一個與我的情況相同。似乎 Laravel 文檔沒有顯示像我這樣的情況,盡管我的情況在數(shù)據(jù)庫查詢的 where 子句中很常見。我的例子中的 where 子句如下所示,我無法讓它與 where() 和 orwhere() 方法以及人們在其他帖子中建議的技巧一起使用。任何信息表示贊賞。謝謝。where a = 1 and b = 2 and (c = 3 or c = 4) and (d = 5 or d = 6)另一層復(fù)雜性是,我可以將所有“and”條件合并到一個數(shù)組中,并將其輸入一個 where() 方法,但我必須將“or”條件分組到單獨(dú)的數(shù)組中,以及在代碼中動態(tài)收集多少組,比如下面的。$and = [['a', '=', 1], ['b', '=', 2], ...];if($cond1) $or['or1'] = [['c', '=', 3], ['c', '=', 4], ...];if($cond2) $or['or2'] = [['d', '=', 5], ['d', '=', 6], ...];if($cond3) $or['or3'] = [['e', '=', 7], ['e', '=', 8], ...];...PS:我要感謝所有回復(fù)(帖子或評論)的人。我認(rèn)真考慮了所有建議并嘗試了一些可以應(yīng)用于我的案例的建議,但不幸的是它們都不起作用。所以我的解決方案只是編譯一個原始的 where 子句,如上面給出的示例所示,并使用 whereRaw() 方法。這樣做很簡單,而且效果很好。
查看完整描述

4 回答

?
紅顏莎娜

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超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();


查看完整回答
反對 回復(fù) 2023-09-08
?
侃侃無極

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個贊

如果我收到您的問題,那么這張收據(jù)適合您:


$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();


查看完整回答
反對 回復(fù) 2023-09-08
?
侃侃爾雅

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個贊

像這樣的事情應(yīng)該可以解決問題:


Model::where([

    ['a', '=', 1],

    ['b', '=', 2],

    [['c', '=', 3], 'OR', ['c', '=', 4]],

    [['d', '=', 5], 'OR', ['d', '=', 6]]

]);


查看完整回答
反對 回復(fù) 2023-09-08
?
楊魅力

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個贊

既然你已經(jīng)改進(jìn)了你的問題。以下是實(shí)現(xiàn)這一目標(biāo)的方法。


沒有測試過。像這樣的事情怎么樣?


$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();


查看完整回答
反對 回復(fù) 2023-09-08
  • 4 回答
  • 0 關(guān)注
  • 350 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號