查询Laravel选择WhereIn数组

Do *_*Dat 8 php laravel eloquent

这个查询只能不起作用,它只显示1行

 $data = Post::select('id', 'name')
   ->whereIn('id', [$order])
   ->orderByRaw(\DB::raw("FIELD(id, $order)"))
   ->get();
Run Code Online (Sandbox Code Playgroud)

但这是有效的,它显示所有行

  $data = Post::select('id', 'name')
    ->whereIn('id', [1,2,3])
    ->orderByRaw(\DB::raw("FIELD(id, $order)"))
    ->get();
Run Code Online (Sandbox Code Playgroud)

对不起我的英文:D谢谢!

Rak*_*mar 23

您的查询在这里: -

$data = Post::select('id', 'name')
  ->whereIn('id', $order)
  ->orderByRaw(\DB::raw("FIELD(id, ".implode(",",$order).")"))
  ->get();
Run Code Online (Sandbox Code Playgroud)

从$ order中删除[].

对于WhereIn条件,第二个参数应该是数组.所以$ order应该是

$order = [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)


D.D*_*glo 5

如果您$order是一个数组,我认为您应该这样做

whereIn('id', $order) 代替 whereIn('id', [$order])

PS在官方文档中提到第二个参数应该是一个数组:

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