hamba/queryget

此包的最新版本(v0.4.0)没有可用的许可信息。

请求中查询Eloquent模型的辅助工具

v0.4.0 2018-05-23 01:50 UTC

This package is auto-updated.

Last update: 2024-09-08 11:37:11 UTC


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"},
    ]
}