承接 arielsand/mongodb-eloquent-api-filter-mapping 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

arielsand/mongodb-eloquent-api-filter-mapping

最新稳定版本:v1.1.5

Composer 安装命令:

composer require arielsand/mongodb-eloquent-api-filter-mapping

包简介

Awesome and simple way to filter Monolog/Eloquent queries right from the API call url

README 文档

README

Awesome and simple way to filter Monolog/Eloquent queries right from the API call url

Installation

composer require arielsand/mongodb-eloquent-api-filter-mapping

Usage Example

Using the Trait

class UserController extends Controller
{  
    
    use Arielsand\MoloquentApiFilter\Traits\FiltersMoloquentApi;
    
    public function index(Request $request)
    {
        $users = User::query();
        
        return $this->filterApiRequest($request, $users);
    }
}

Using the Class

use Arielsand\MoloquentApiFilter\MoloquentApiFilter;

class UserController extends Controller
{    
    public function index(Request $request)
    {
        $query = User::query();
        
        $filtered = (new MoloquentApiFilter($request, $query))->filter(['value' => 'address'], true);
        
        return $filtered->get();
    }
}

Documentation

New in v1.1

Chain multiple queries by and/or:
.../model?filter[field]=like:*val1:and:like:val2*:or:null

will result in:

SELECT * FROM models 
WHERE (
            field LIKE '%val1' 
        AND field LIKE 'val2%'
      )
      OR field IS NULL 
Added Trait

You can now use Matthenning\EloquentApiFilter\Traits\FiltersEloquentApi to simply filter your requests with

$this->filterApiRequest($request, $query);

URL Syntax

.../model?filter[field]=operator:comparison

.../model?filter[field]=operator

Operators:

like, notlike, today (for timestamps), nottoday (for timestamps), null, notnull, ge (greater or equal), gt (greater), le (lower or equal), lt (lower), eq (equal)

Example queries

Matches all entities where name starts with Rob and deceased is null:

.../users?filter[name]=like:Rob*&filter[deceased]=null:

Multiple filters on one field can be chained. Matches all entities where created_at is between 2016-12-10 and 2016-12-08:

.../users?filter[created_at]=lt:2016-12-10:and:gt:2016-12-08

Filter by related models' fields by using the dot-notaion. Matches all Posts of Users where Post name contains "API"

.../users?filter[posts.name]=like:*API*

Filter timestamps. Matches all users whos' birthdays are today

.../users?filter[birthday]=today

Limit and sorting. Matches the top 10 users with age of 21 or older sorted by name in ascending order

.../users?filter[age]=ge:21&order[name]=asc&limit=10

Known issues

  • Sorting by related fields doesn't work yet.

统计信息

  • 总下载量: 2.09k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 3
  • 开发语言: PHP

其他信息

  • 授权协议: GPL-3.0
  • 更新时间: 2017-07-07