2016-07-02 116 views
2

此查詢不僅沒有工作,它只能顯示1行查詢Laravel選擇其中陣列

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

對不起,我的英語:d謝謝!

+0

請避免在您的問題和意見的微笑 –

回答

8

您的查詢是這裏: -

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

從$爲了刪除[]。

For Where條件第二個參數應該是數組。所以$訂單應該是

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

這是我的代碼$ keys = array_keys($ request-> all()); $ order = join(「,」,$ keys); –

+0

只使用這個$ order = array_values($ request-> all());和(\ DB :: raw(「FIELD(id,」.implode(「,」,$ order)。「)」) –

+0

使用像這樣$ order = array_values($ request-> all())and \ DB: :raw(「FIELD(id,」.implode(「,」,$ order)。「)」) –

1

如果您$order是一個數組,我認爲你應該這樣做

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

附:在官方文件提到,第二個參數應該是一個數組:

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

來吧,看到我的第一個查詢: –

+0

這裏$ keys = array_keys($ request-> all()); $ order = join(「,」,$ keys); –

+0

這是行不通的:數組到字符串轉換 –