查询 Laravel Select Where In Array

2022-08-30 22:48:20

此查询无法正常工作,它仅显示 1 行

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

但这工作正常,它显示所有行

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

谢谢!


答案 1

您的查询在这里:-

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

从 中删除 。[]$order

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

$order = [1,2,3,4]

答案 2

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

whereIn('id', $order)而不是whereIn('id', [$order])

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

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

推荐