2017-07-17 67 views
0

我的代碼:Laravel inRandomOrder重複兩次分頁

$products = Product::whereIn('id_principal_category', $array)->inRandomOrder()->paginate(6); 

它有時會顯示我重複記錄。

我已閱讀我必須使用whereNotIn,問題是它可以工作,如果它只是一次...但我怎麼能這樣做,如果它有一個paginator?因爲我不知道哪些重複的記錄是,我不能使用whereNotIn ..所以我的問題是我怎麼能做到這一點inRandomOrder不顯示paginator重複的記錄?

感謝

回答

0

看看unique()方法幫助。

$products = Product::whereIn('id_principal_category', $array)->unique()->inRandomOrder()->paginate(6); 
0

你不能在分頁時使用隨機排序,mysql不能跟蹤每個訪問者的行。 我引用這些線路從Chris Henry's answer

從一些現有列已編入索引的進行排序,在方案1

挑選。這可以包括創建,修改時間戳。

解決方案2

你可以有存儲的隨機數進行排序的附加列。它應該被索引,顯然。定期運行以下查詢;

UPDATE table SET rand_col = RAND();