красноречивый Laravel вложенный где или для 2 между - PullRequest
0 голосов
/ 09 мая 2018

Здравствуйте, я пытаюсь запросить что-то таким образом:

$result = DB:table('tableA')
          ->join('tableB','tableB.id','=','TableA.tid')
->join('tableC','tableB.sd','=','TableC.id')
 ->where('tableC.number', '=', '1')
 ->where('tableB.lang', '=', 'en')
->where(function ($q,$regFilterVal) {
                    // Nested OR condition
                    $q->whereBetween('tableC.numberMin',  $regFilterVal)
                        ->orBetween('tableC.numberMin',  $regFilterVal);
                })

я тоже пытаюсь изменить последнюю часть:

->where(function ($q,$regFilterVal) {
                    // Nested OR condition
                    $q->whereBetween('tableC.numberMin',  $regFilterVal)
                        ->orBetween('tableC.numberMin',  $regFilterVal);
                })
by:
 ->whereBetween('tableC.numberMin',  $regFilterVal)
                        ->orBetween('tableC.numberMin',  $regFilterVal)

Но не работает, это то, что я пытаюсь сделать, работает в SQL:

and (TableC.numberMin between (a1,a2) or TableC.numberMax between (a1,a2))

тогда в резюме я хочу добавить условие где .... и (условие1 или условие2), где между ними находятся 2 условия, как правильно использовать правильный синтаксис для этого

1 Ответ

0 голосов
/ 09 мая 2018

Я думаю, что проблема с обратным вызовом

Попробуйте это -

$result = DB:table('tableA')
          ->join('tableB','tableB.id','=','TableA.tid')
->join('tableC','tableB.sd','=','TableC.id')
 ->where('tableC.number', '=', '1')
 ->where('tableB.lang', '=', 'en')
->where(function ($q) use($regFilterVal) {
                    // Nested OR condition
                    $q->whereBetween('tableC.numberMin',  $regFilterVal)
                        ->orBetween('tableC.numberMin',  $regFilterVal);
                })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...