Я думаю, проблема в том, что вы сначала используете ::all()
, который возвращает все Product
экземпляра в Collection
, а затем методы сбора. Поскольку эти методы действуют в порядке использования, перед сортировкой вы разбиваете на части и смещаете, поэтому каждый раз вы получаете одни и те же продукты. Используйте правильный синтаксис Builder
для правильной и эффективной обработки:
$products = Product::offset($request->input("offset"))
->limit($request->input("limit"))
->orderBy("id", "DESC")
->get();
Поскольку это экземпляр Builder
, запрос будет скомпилирован и выполнен в соответствии с логикой грамматики вашей Базы данных и в одномзапрос. Нет ничего плохого в использовании логики Collection
, вам просто нужно использовать правильный порядок методов (сначала sortByDesc()
, затем slice()
, затем take()
), но это невероятно неэффективно, так как вы должны обрабатывать всеProduct
в вашей базе данных.