castion2293/

query-filter

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

v0.0.2 2018-12-12 14:24 UTC

This package is auto-updated.

Last update: 2024-09-13 03:04:00 UTC


README

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

基于Jeffray Way的Laracast教程

安装

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

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

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

用法

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

namespace App\Http\Filters;

use Kblais\QueryFilter\QueryFilter;

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

namespace App;

use Illuminate\Database\Eloquent\Model;
use Kblais\QueryFilter\FilterableTrait;

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

namespace App\Http\Controllers;

use App\Http\Filters\MyModelFilter;
use App\MyModel;
use Kblais\QueryFilter\FilterableTrait;

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

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