@qu1kgg

Как сделать пагинацию в моделе laravel?

Есть список товаров, которые выбираются таким образом:

$category = category::where('link', $id)->with('childrenCategories')->first(); //выбираю категорию которая активна и к ней все подкатегории(и вложенные категории в них)
//model category childrenCategories
public function childrenCategories()
{
    return $this->hasMany(category::class, 'category_id')->with('categories')->with('products');
}

Далее я через foreach перебираю категории и вывожу продукту, вопрос, как мне устроить пагинацию при выводе продуктов таким образом, либо если я не правильно продумал логику, то как лучше сделать, чтобы в выбранной категории отображались все товары выбранной категории и их подкатегорий?
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
Самый простой вариант: получить категорию и ее дочерние категории. Собрать массив idшников категорий.
Product::query()
->whereIn('category_id',  $categoryIds)
->paginate(15);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Adamos
@Adamos
$query->skip($pageSize * $pageNumber)->take($pageSize)->get()
Ответ написан
Комментировать
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
https://github.com/staudenmeir/eloquent-eager-limit
позволяет установить offset() и limit() для загружаемых реляций
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы