Объединение запросов where и whereIn в один запрос

У меня две просьбы

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. Это так?

Вы имеете в виду ->where('updated_at', '=', $now)->orWhereIn('key', $keysArr)?

Jonas Staudenmeir 21.09.2018 16:00

@JonasStaudenmeir да, мне нужны оба результата и их уникальность

Bat Man 21.09.2018 16:03

Вы пробовали?

Jonas Staudenmeir 21.09.2018 16:07

или Где здесь наиболее "красноречиво", но знайте на будущее, что существует фактический вызов "union ()", который может быть выполнен для объекта запроса для объединения с другим, например, этим $ queryObject-> union ($ queryObject2);

wheelmaker 21.09.2018 19:43
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
1
4
219
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

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

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

Вы можете использовать предложение orWhere, если хотите, или результат между обоими вашими условиями.

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

DB::table('myTable')->select('id', 'name')
-> where('updated_at', '=', $now)
-> orWhere(function($q) use($keysArr){
     $q->whereIn('key', $keysArr);
})
-> get();

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

$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 для этого конкретного случая, но объединения необходимы в других случаях.

Другие вопросы по теме