我有代码:
$products = Product::whereIn('id_principal_category', $array)->inRandomOrder()->paginate(6);
它有时会给我一个重复的记录。
我已经读过我必须使用whereNotIn,问题是如果它只有一次它可以工作......但是如果它有一个分页器怎么办?因为我不知道哪些重复的记录是什么,我不能使用whereNotIn ..所以我的问题是我怎么能这样做inRandomOrder没有显示重复记录与分页器?
由于
答案 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();