laravel修改toArray方法

1.在App\Service新建一个service 继承 LengthAwarePaginator (也可以写在其他层次)


<?php
namespace App\Service;
 
class LengthAwarePaginatorService extends \Illuminate\Pagination\LengthAwarePaginator
{
    /**
     * 重写toArray
     **/
    public function toArray()
    {
        return [
            'data' => $this->items->toArray(),
            'total' => $this->total(),
            'currentPage'=>$this->currentPage(),
        ];
    }
    /**
     * 添加一个object转数组的方法
     * 处理生成新的分页
     **/ 
    public function pageInit(){
        $total = $this->total();
        $limit=$this->perPage();
        $page = $this->currentPage();
        $list = $this->items();

        if (empty($total)){
            return  ['total'=>0,'pages'=>1,'next_page'=>0,'lists'=>[]];
        }
        $pages=(int)ceil($total/$limit);

        $next_page = 0;
        if($page<$pages){
            $next_page = ++$page;
        }
        return ['total'=>$total,'pages'=>$page,'pageSize' => $limit,'next_page'=>$next_page,'list'=>$list];
    }
}

2.在/app/Providers/AppServiceProvider.php中注册一下

主要是在register方法里面

<?php
 
namespace App\Providers;
 
use App\Services\LengthAwarePaginatorService;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\ServiceProvider;
 
class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->bind('Illuminate\Pagination\LengthAwarePaginator',function ($app,$options){
            return new LengthAwarePaginatorService($options['items'], $options['total'], $options['perPage'], $options['currentPage'] , $options['options']);
        });
 
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

懒惰的胖猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值