hamba / queryget
此包的最新版本(v0.4.0)没有可用的许可信息。
请求中查询Eloquent模型的辅助工具
v0.4.0
2018-05-23 01:50 UTC
Requires
- php: >=7.0.0
- illuminate/support: 5.0.*|5.1.*|5.2.*|5.3.*|5.4.*|5.5.*
README
Laravel query get 是执行Eloquent模型查询的辅助工具。
阅读完整文档
安装
composer require hamba/queryget
使用
您有以下模型
class User extends Model{ protected $fillable = [ 'username', 'email' ]; public function roles() { return $this->belongsToMany(Role::class, 'role_users'); } public $queryable = [ 'email' => 'string',//enable attribute email to be queried 'name' => 'string:username',//enable attribute with alias 'roles' => 'relation'//enable relation 'roles' ]; }
class Role extends Model { protected $fillable = [ 'name', 'permissions', ]; public $queryable = ['name', 'permissions']; }
并且您有这个控制器
class UserController extends Controller { public function index() { return qg(User::class)->apply()->get(); } }
以及这个路由
Route::get('users', 'UserController@index');
使用QueryGet,您可以执行以下请求
选择属性或关系
- /users?props[]=name
{ "total":3, "data":[ {"id":1,"name":"User 1"}, {"id":2,"name":"User 2"}, {"id":3,"name":"User 3"}, ] }
- /users?props[]=name&props[]=roles.name
{ "total":3, "data":[ { "id":1, "name":"User 1", "email":"user1@mail.com", "roles":[ {"id":1,"name":"admin"}, {"id":2,"name":"manager"} ] }, { "id":2, "name":"User 2", "email":"user2@mail.com", "roles":[ {"id":2,"name":"manager"} ] }, { "id":3, "name":"User 3", "email":"user3@mail.com", "roles":[ {"id":3,"name":"employee"} ] }, ] }
过滤属性或关系
- /users?props=id&email=user1%
{ "total":1, "data":[{"id":1}] }
排序属性或关系
- /users?props[]=id&props[]=name&sortby=name_desc
{ "total":3, "data":[ {"id":3,"name":"User 3"}, {"id":2,"name":"User 2"}, {"id":1,"name":"User 1"} ] }
执行分页
- /users?props[]=name&page=1&pagesize=1
{ "total":3, "data":[ {"id":2,"name":"User 2"}, ] }