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)
如果您$order是一个数组,我认为您应该这样做
whereIn('id', $order) 代替 whereIn('id', [$order])
PS在官方文档中提到第二个参数应该是一个数组:
$users = DB::table('users')
->whereIn('id', [1, 2, 3])
->get();
Run Code Online (Sandbox Code Playgroud)