Почему get возвращает 10 товаров, а paginate не возвращает товаров? - PullRequest
0 голосов
/ 30 января 2020

Основная проблема, кажется, связана с разбиением на страницы, потому что тот же код с -> get возвращает некоторые элементы, но с -> paginate ничего не возвращает.


$products = DB::table('categories_products')
    ->leftJoin('categories', 'categories_products.categories_id', '=', 'categories.id')
    ->leftJoin('products', 'categories_products.products_id', '=', 'products.id')
    ->select('categories_products.categories_id as c_id', 
                'categories.name as c_name', 
                'categories.img as c_img', 
                'categories_products.products_id as p_id', 
                'products.name as p_name', 
                'products.img as p_img');

if(request()->has('category')){
    $products = $products->where('c_id', request('category'));
}

$products = $products->orderBy('p_name')->groupBy('p_id')->paginate(9)
        ->appends(['category' => request('category')]);

dd($products);
  • Ожидаемый результат:
    • Позиции: 10,
    • Страниц: 2;
  • Результат кода:
    • элементы: 0,
    • страницы: 1;

Изменение paginate-> добавление к -> get :

$products = $products->orderBy('p_name')->groupBy('p_id')->paginate(9)
        ->appends(['category' => request('category')]);

dd($products);

к

$products = $products->orderBy('p_name')->groupBy('p_id')->get();

dd($products);
  • Возвраты:
    • пунктов: 10;

1 Ответ

0 голосов
/ 06 февраля 2020

удалось заставить его работать. Пришлось удалить одно из объединений.
Я думаю, что проблема была в SQL выделении.
Мне кажется, ему не нравились SQL объединения или переименованные имена столбцов.



    $products = DB::table('products')
        ->leftJoin('categories_products', 'products.id', '=', 'categories_products.products_id');


    if(request()->has('category')){
        $products = $products->where('categories_id', request('category'));
    }


    $products = $products->groupBy('products_id')->paginate(9)
            ->appends(['category' => request('category')]);


    dd($products);

...