2017-07-17 420 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();