我可以做模型 - > where('id',ARRAY)多个条件吗?

Vud*_*dew 35 php where laravel laravel-4 laravel-5

标题说明了一切.

我知道我能做到这一点:

DB::table('items')->where('something', 'value')->get()
Run Code Online (Sandbox Code Playgroud)

但我想检查多个值的where条件,如下所示:

DB::table('items')->where('something', 'array_of_value')->get()
Run Code Online (Sandbox Code Playgroud)

有这么简单的方法吗?

Lim*_*nte 77

whereIn():

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


小智 39

您可以使用以下解决方案之一:

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

或者:

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


cha*_*fdo 8

您可以使用whereInwhich 接受一个数组作为第二个参数。

DB:table('table')
   ->whereIn('column', [value, value, value])
   ->get()
Run Code Online (Sandbox Code Playgroud)

您可以多次链接 where。

DB:table('table')->where('column', 'operator', 'value')
    ->where('column', 'operator', 'value')
    ->where('column', 'operator', 'value')
    ->get();
Run Code Online (Sandbox Code Playgroud)

这将使用AND运算符。如果你需要OR你可以使用orWhere方法。

对于高级where语句

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


Ged*_*nas 8

如果您需要几个参数:

$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();
Run Code Online (Sandbox Code Playgroud)