web-dev-qa-db-fra.com

Puis-je faire Model-> where ('id', ARRAY) plusieurs conditions where?

Le titre dit tout.

Je comprends que je peux faire ceci:

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

Mais ce que je veux vérifier la condition where pour plusieurs valeurs comme ceci: 

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

Y a-t-il un moyen facile de faire ça?

27
Vudew

Il y a whereIn() :

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

Si vous avez besoin de plusieurs paramètres:

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

Vous pouvez utiliser l'une des solutions ci-dessous:

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

ou:

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

Vous pouvez utiliser whereIn qui accepte un tableau comme second paramètre.

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

Vous pouvez enchaîner plusieurs fois.

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

Ceci utilisera l'opérateur AND. Si vous avez besoin de OR, vous pouvez utiliser la méthode orWhere.

Pour les instructions where avancées

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