Laravel inRandomOrder重复两次分页

时间:2017-07-17 18:21:18

标签: php laravel

我有代码:

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

它有时会给我一个重复的记录。

我已经读过我必须使用whereNotIn,问题是如果它只有一次它可以工作......但是如果它有一个分页器怎么办?因为我不知道哪些重复的记录是什么,我不能使用whereNotIn ..所以我的问题是我怎么能这样做inRandomOrder没有显示重复记录与分页器?

由于

2 个答案:

答案 0 :(得分:0)

查看unique()方法是否有帮助。

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

答案 1 :(得分:0)

你不能使用随机排序和分页,mysql无法跟踪每个访问者的行。 我引用了Chris Henry's answer

中的那些行
  

解决方案1 ​​

     

从已编入索引的许多现有列中进行选择。这可以包括创建的,修改后的时间戳。

     

解决方案2

     

您可以使用其他列存储随机数进行排序。显然应该将其编入索引。定期运行以下查询;

UPDATE table SET rand_col = RAND();