2016-05-31 8 views
0

Как мы можем разбивать страницы на случайные записи в laravel? , например:Laravel - Paginate Случайные записи

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

выше, заканчивается в дублированных записей, из-за случайной последовательности. Как я могу перенести объект $ products, чтобы, когда новый запрос страницы был сделан, он должен отфильтровать один и тот же/фиксированный набор случайных записей?

+0

Пожалуйста, сообщите нам, что у вас есть alreadu, и что не работает –

+0

@AlexandreCartapanis - разбиение на страницы дает дубликаты записей. Мы использовали приведенный выше код. – dang

ответ

5

Вы погружаетесь в documentation из mysql и ищите функциональность RAND(), которую вы увидите, вы можете использовать «семя».

Используя семена, вы всегда получите одинаковые результаты, которые рандомизированы.

Пример:

$products = Product 

    ::all() 

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

    ->paginate(4); 

Вы можете создать свои собственные семена и хранить в в сессии или что-то, чтобы вспомнить его.

Смежные вопросы