Могу ли я сделать Model-> where ('id', ARRAY) несколько условий where?

Название говорит само за себя.

Я понимаю, что я могу сделать это:

DB::table('items')->where('something', 'value')->get()

Но что я хочу проверить, где условие для нескольких значений, например, так:

DB::table('items')->where('something', 'array_of_value')->get()

Есть ли простой способ сделать это?

Ответы

Ответ 1

Там whereIn():

$items = DB::table('items')->whereIn('id', [1, 2, 3])->get();

Ответ 2

Если вам нужно по нескольким параметрам:

$ids = [1,2,3,4];
$not_ids = [5,6,7,8];
DB::table('table')->whereIn('id', $ids)
                  ->whereNotIn('id', $not_ids)
                  ->where('status', 1)
                  ->get();

Ответ 3

Вы можете использовать whereIn который принимает массив в качестве второго параметра.

DB:table('table')
   ->whereIn('column', [value, value, value])
   ->get()

Вы можете цепочки, где несколько раз.

DB:table('table')->where('column', 'operator', 'value')
    ->where('column', 'operator', 'value')
    ->where('column', 'operator', 'value')
    ->get();

Это будет использовать оператор AND. если вам нужно OR вы можете использовать метод orWhere.

Для продвинутых where заявления

DB::table('table')
    ->where('column', 'operator', 'value')
    ->orWhere(function($query)
    {
        $query->where('column', 'operator', 'value')
            ->where('column', 'operator', 'value');
    })
    ->get();

Ответ 4

Вы можете использовать одно из следующих решений:

$items = Item::whereIn('id', [1,2,..])->get();

или же:

$items = DB::table('items')->whereIn('id',[1,2,..])->get();

Ответ 5

Также

$items = Item::where(['field1' => 'value1', 'field2' => 'value2'...])->get();

работает