EloquentORM无疑是非常强大的,为开发者提供了许多有用的查询构建器。有时,当现有的查询构建器不能满足我们的要求时,我们也可以自定义它。模型层的父类继承了EloquentModel,在构造方法中使用宏注册了一个自定义的构建器。示例代码如下:classModelextends\Illuminate\Database\Eloquent\Model{publicfunction__construct(array$attributes=[]){/***custombuilder*//***page()方法*参数:$page页数;$limit每页显示多少项*使用方法:查询链调用*/\Illuminate\Database\Query\Builder::macro('page',function($page,$limit){return$this->限制($limit)->offset(($page-1)*$limit);});父母::__构造($属性);}}Users模型继承自Model,在controller中使用如下示例。classUsersControllerextendsController{publicfunctionindex(){//TODO:接收参数$page和$limit$result=['list'=>Users::query()->with('XXX')->page($page,$limit)->get(),'total'=>Users::select('id')->count(),];返回json(200,$结果);}}完了!PS:其实文中自定义的page()方法与EloquentModel中的内置方法perPage()功能相同,所以自定义page()方法仅作为示例。
