jedrzej / pimpable
Laravel 4/5/6 包,允许使用请求参数动态过滤、排序和预加载模型的关系
Requires
- illuminate/support: *
- jedrzej/searchable: 0.0.*
- jedrzej/sortable: 0.0.*
- jedrzej/withable: 0.0.*
Requires (Dev)
README
你的API需要允许 过滤 结果吗? 当然需要!
你需要 排序 结果或者与模型一起返回选定的关系吗? 我打赌你需要!
让我们这样做吧!
美化你的模型!
class Post extends Eloquent { use PimpableTrait; }
美化你的API!
class PostsController extends Controller { public function index() { return Post::pimp()->get(); } }
你需要哪些数据?
我需要ID为42的线程中的所有帖子...
...包含字符串 "awesome"...
...不早于2014年3月...
...不是由ID为666的用户发表的。
还有一件事...按活跃度排序,让我先看到活跃的帖子...
哦,并且让活跃和未活跃的帖子按发布日期排序...
我提到我需要每篇帖子都包含用户数据吗?
准备好了... 静下来... 开始!
GET /api/posts
?thread_id=42
&text=%awesome%
&created_at=(ge)201403
&user_id=!666
&sort[]=is_active,desc
&sort[]=created_at,desc
&with=user
BAM!完成了!这太酷了!
概述
Laravel 4/5/6 包,允许使用请求参数动态过滤、排序和预加载模型的关系。
它结合了以下包
- Searchable - 过滤模型
- Sortable - 排序模型
- Withable - 预加载关系
它简化了将它们嵌入到模型中,并允许使用单个函数调用这三个功能。
Composer 安装
将以下行添加到项目中的 composer.json
文件
"jedrzej/pimpable": "0.0.6"
或者在项目根目录的命令行中运行以下命令
composer require "jedrzej/pimpable" "0.0.6"
使用方法
美化你的模型
为了美化你的模型类,你需要将 PimpableTrait 导入到你的模型中。这将内部导入所有三个行为。
class Model extends Eloquent { use PimpableTrait; }
默认情况下,所有模型字段都是可搜索和可排序的;所有关系也可以默认预加载。如果你需要限制哪些字段可以过滤和排序,以及哪些关系可以加载,请参阅对应行为包的文档。
美化你的API
一旦你美化了你的模型,模型上就会有一个额外的 pimp() 方法,它允许额外的行为。所有标准都将自动从请求中获取,但如果你想要覆盖请求参数,你可以将所需值传递给 pimp() 方法
//override all parameters return Model::pimp($filters, $sort, $relations)->get(); //override sorting criteria only return Model::pimp(null, $sort)->get();
有关如何使用请求参数配置行为的详细信息,请参阅对应行为包的文档。
额外配置
如果你正在使用 sort
请求参数用于其他目的,你可以通过在模型中设置 $sortParameterName
属性来更改将被解释为排序标准的参数名称,例如
protected $sortParameterName = 'sortBy';
如果你正在使用 with
请求参数用于其他目的,你可以通过在模型中设置 $withParameterName
属性来更改将被解释为要加载的关系列表的参数名称,例如
protected $withParameterName = 'relations';