paginate分页常见问题
分页后的数据 使用集合的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里的方法
数据结果就是莫得了分页信息:
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: