paginate分頁常見問題

czd1947發表於2020-10-13

分頁後的資料 使用集合的map方法過濾資料後, 分頁的資訊都沒有了, 只有查詢到的資料了 , 為什麼?

程式碼如下:

//查詢出來的分頁資料 有列印是有分頁資訊的
$goods = Goods::query()
    ->join('goods_categories', 'goods_categories.id', '=', 'goods.category_id')
    ->join('users', 'users.id', '=', 'goods.user_id')
    ->where('goods.sale_type', $request->sale_type)
    ->orderBy($order_field, $order_type)
    ->when($category_name, function ($query)use ($category_name){
        $query->where('goods_categories.name', 'like', '%'.$category_name.'%');
    })
    ->leftJoin('user_authenticates as ua', 'ua.uid', '=', 'users.id')
    ->select([
        'goods.*',
        'users.name as user_name',
        'users.phone',
        'users.avatar',
        'ua.status',
        'goods_categories.name',
    ])
    ->paginate();

// 對分頁資料進行處理
$goods = $goods->map(function($item){
    $attr_name_arr = [];
    if(!empty($item->goods_attrs)){
        $attr_name_arr = GoodsAttributeValue::query()
                            ->whereIn('id', $item->goods_attrs)
                            ->select(['id', 'name'])
                            ->get()
                            ->toArray();
        $attr_name_arr = array_column($attr_name_arr, 'name');
    }
    $item->goods_attri_name = implode(',', $attr_name_arr);
    return $item;
});

return $this->success($goods);

注: $this->success 是我寫的trait裡的方法

資料結果就是莫得了分頁資訊:

paginate分頁常見問題

本作品採用《CC 協議》,轉載必須註明作者和本文連結