mcklayin/query-filter

轻松为您的 Eloquent 模型创建过滤器。基于 kblais/query-filter

dev-master 2019-12-29 16:40 UTC

This package is not auto-updated.

Last update: 2024-09-21 10:17:22 UTC


README

轻松为您的 Eloquent 模型创建过滤器。

基于 Jeffray Way 的 Laracast 教程

安装

当前库在 Composer 上不可用,因此您需要在您的 composer.json 中手动声明。

为此,在您的 composer.json 中添加以下内容

{
    "require" : {
        "mcklayin/query-filter": "dev-master"
    },
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/mcklayin/query-filter"
        }
    ]
}

或者在控制台输入:composer require "mcklayin/query-filter @dev"

用法

  • 创建您的模型过滤器,例如在 App\Http\Filters 命名空间下
<?php

namespace App\Http\Filters;

use McklayiN\QueryFilter\QueryFilter;

class MyModelFilter extends QueryFilter
{
    public function foo($value)
    {
        return $this->builder->where('foo', 'bar');
        //or
        //return $this->where('foo', 'bar');
    }
}
  • 然后,在您的模型上添加 FilterableTrait 以允许使用 MyModel::filter()
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use McklayiN\QueryFilter\Traits\FilterableTrait;

class MyClass extends Model
{
    use FilterableTrait;
}
  • 最后,您可以在控制器中使用 MyModel::filter() 方法
<?php

namespace App\Http\Controllers;

use App\Http\Filters\MyModelFilter;
use App\MyModel;

class MyController extends Controller
{
    public function index(MyModelFilter $filter)
    {
        $data = MyModel::filter($filter)->get();

        return response()->json(compact('data'));
    }
}