Объединение запросов where и whereIn в один запрос - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть два запроса

DB::table('myTable')->select('id', 'name')->where('updated_at', '=', $now)->get();

и

DB::table('myTable')->select('id', 'name')->whereIn('key', $keysArr)->get();

Я хочу объединить их в один запрос, но боюсь, что если я сделаю это как

DB::table('myTable')->select('id', 'name')
    -> where('updated_at', '=', $now)
    -> whereIn('key', $keysArr)
    -> get();

whereIn отфильтрует результат where.Это так?

Ответы [ 3 ]

0 голосов
/ 21 сентября 2018

Вы можете использовать это:

DB::table('myTable')->select('id', 'name')
-> where('updated_at', '=', $now)
-> orWhere(function($q) use($keysArr){
     $q->whereIn('key', $keysArr);
})
-> get();
0 голосов
/ 21 сентября 2018

Чтобы конкретно "объединить" два запроса:

$queryOne = DB::table('myTable')->select('id', 'name')->where('updated_at', '=', $now);
$queryTwo = DB::table('myTable')->select('id', 'name')->whereIn('key', $keysArr);

$unifiedQueryResults = $queryOne->union($queryTwo)->get();

Мне действительно нравится решение orWhere, предлагаемое Jitendra для этого конкретного случая, но объединения требуются в других случаях.

0 голосов
/ 21 сентября 2018

Если я правильно понял вашу проблему, то вы хотите сделать так

...