2016-05-31 115 views
0

如何通过laravel中的随机记录进行分页? 例如:Laravel - Paginate随机记录

$products = Product::all()->orderBy(DB::raw('RAND()')); 
$products->paginate(4); 
$products->setPath('products'); 

上面会结束重复的记录,因为随机顺序。 如何持久化$ products对象,以便在发出新的页面请求时,它应该过滤相同/固定的随机记录集?

+0

请告诉我们你有没有尝试过什么,有什么不工作 –

+0

@AlexandreCartapanis - 分页给出重复的记录。我们使用了上面的代码。 – dang

回答

5

当您深入了解mysql的documentation并搜索RAND()函数后,您会看到您可以使用“种子”。

通过使用种子,您将始终获得相同的随机结果。

例子:

$products = Product 

    ::all() 

    ->orderBy(DB::raw('RAND(1234)')) 

    ->paginate(4); 

您可以生成自己的种子,并在会话中存储或某事记住它。