lukesnowden / filterable
Laravel 构建器过滤器工具
v0.0.1
2018-10-05 09:22 UTC
Requires
- laravel/framework: 5.*
This package is auto-updated.
Last update: 2024-09-06 10:46:09 UTC
README
此特性允许您轻松创建可过滤的模型。
composer require lukesnowden/filterable:dev-master
操作步骤
以下是可过滤类的默认设置,此设置允许您过滤客户的结果;
<?php namespace App\Customers\Filters; use Lukesnowden\Filterable\Traits\Filterable; use App\Customers\Filters\OrderByd; use App\Customers\Filters\Methods; class FilterCustomers { use Filterable; /** * @var string */ protected static $defaultOrderBy = 'forename'; /** * Called just before filtering to set local filters * @return void */ public function preFilter() { self::addOrderBys( new OrderBys() ); self::addFilters( new Methods() ); } }
默认情况下,排序方法是 forename
。我们还设置了一些默认的 orderBys
和 filters
。下面只显示了用于姓氏的一个 ordderBy
和一个 filter
方法。
<?php namespace App\Customers\Filters; use Closure; use Illuminate\Database\Eloquent\Builder; use Illuminate\Http\Request; class OrderBys { /** * @return Closure */ public function forename() : Closure { return function( Builder $builder, $order ) { $builder->orderBy( 'forename', $order ); }; } } Class Methods { /** * @return Closure */ public function forename() : Closure { return function( Builder $builder, Request $request ) { if( $forename = $request->input( 'forename' ) ) { $builder->where( 'forename', 'like', "%{$forename}%" ); } }; } }
现在我们可以使用这个来对客户模型进行排序;
<?php $customers = Customer::query(); ( new FilterCustomers( $customers, request() ) )->filter(); $customers = $customers->paginate( 20 );
您也可以添加新的 ordderBy
和 filter
方法;
<?php FilterCustomers::addFilter( 'emailAddress', function( Builder $builder, Request $request ) { if( $email = $request->input( 'email' ) ) { $builder->where( 'email', 'like', "%{$email}%" ); } }); FilterCustomers::addOrderBy( 'emailAddress', function( Builder $builder, $order ) { $builder->orderBy( 'email', $order ); });
MIT 许可证
版权所有 © 2018 Luke Snowden
在此条件下,任何人都可以免费获得本软件及其相关文档副本(以下简称“软件”),无限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向软件提供者提供软件的人这样做,前提是
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式的保证,明示或暗示,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论此类索赔、损害或其他责任是基于合同、侵权或其他方式,无论是否源于、因之或与此软件的使用或其他交易有关。