jedrzej/pimpable

Laravel 4/5/6 包,允许使用请求参数动态过滤、排序和预加载模型的关系

0.0.6 2019-09-05 10:51 UTC

This package is auto-updated.

Last update: 2024-09-20 18:08:22 UTC


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 包,允许使用请求参数动态过滤、排序和预加载模型的关系。

它结合了以下包

它简化了将它们嵌入到模型中,并允许使用单个函数调用这三个功能。

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';