gentritabazi01 / larapi-components
Larapi 组件
Requires
- illuminate/support: ~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0
This package is auto-updated.
Last update: 2020-09-08 17:53:24 UTC
README
介绍
Larapi Components 让您能够在 Laravel 中进行现代 API 开发。
Larapi Components 包含以下内容...
- 现代的 API 异常处理器。
- 一个控制器类,可以响应,解析端点数据。
- 一个用于从数据库请求数据实体的仓库类。
- 排序。
- 过滤。
- 预加载。
- 分页。
检查如何在您的应用中使用
使用一条命令创建控制器、服务、仓库和模型。
php artisan component:make {parent} {name}
预加载
简单的预加载
/books?includes[]=author
将返回一个包含 5 个 Book
的集合,这些 Book
预加载了 Author
。
IDs 模式
/books?includes[]=author-ids
将返回一个包含 Book
的集合,这些 Book
预加载了它们 Author
的 ID。
侧加载模式
/books?includes[]=author-sideload
将返回一个包含 Book
的集合,以及在一个预加载的根作用域中的它们 Author
的集合。
分页
有两个参数可用:limit
和 page
。其中 limit
将确定每页的记录数,而 page
将确定当前页。
/books?limit=10&page=3
将返回编号为 30-40 的书籍。
排序
应该定义为排序规则的数组。它们将按照定义的顺序应用。
排序规则
属性 | 值类型 | 描述 |
---|---|---|
key | 字符串 | 要排序的模型属性 |
direction | ASC 或 DESC | 按哪个方向排序属性 |
示例
{ "sort": [ { "key": "id", "direction": "DESC" } ] }
将导致书籍按 id
降序排序。
过滤
在使用过滤器之前,请确保您已在指定的模型中声明了 $whiteListFilter。示例
/**
* Columns that can be filtered.
*
* @var array
*/
public static $whiteListFilter = ['first_name', 'posts.body'];
过滤器应定义为过滤器组的数组。
过滤器组
属性 | 值类型 | 描述 |
---|---|---|
or | 布尔值 | 此组中的过滤器应按逻辑 OR 或 AND 运算符分组吗 |
filters | 数组 | 过滤器数组(请参阅以下语法) |
过滤器
属性 | 值类型 | 描述 |
---|---|---|
column | 字符串 | 要过滤的模型属性(也可以是自定义过滤器) |
value | 混合 | 要搜索的值 |
operator | 字符串 | 要使用的过滤器运算符(请参阅以下不同类型) |
not | 布尔值 | 否定过滤器 |
运算符
类型 | 描述 |
---|---|
ct | 字符串包含 |
sw | 以...开头 |
ew | 以...结尾 |
eq | 等于 |
gt | 大于 |
gte | 大于或等于 |
lte | 小于或等于 |
lt | 小于 |
在 | 数组中 |
bt | 之间 |
示例过滤器
以下是如何过滤所有名字为"Gentrit"的用户的方法。
{ "filter_groups": [ { "filters": [ { "column": "first_name", "operator": "eq", "value": "Gentrit" } ] } ] }
您可以在仓库中创建自定义过滤器,如下所示
public function filterAuthorName($queryBuilder, $method, $operator, $value) { switch ($method) { case 'where': $queryBuilder->whereHas('author', function ($q) use ($operator, $value) { $q->where(DB::raw("CONCAT(`first_name`, ' ', `last_name`)"), $operator, $value); }); break; case 'orWhere': $queryBuilder->orWhereHas('author', function ($q) use ($operator, $value) { $q->where(DB::raw("CONCAT(`first_name`, ' ', `last_name`)"), $operator, $value); }); break; }
自定义过滤器函数
参数 | 描述 |
---|---|
$queryBuilder | Eloquent 查询构建器。 |
$method | 要使用的 where 方法 (where , orWhere , whereIn , orWhereIn 等)。 |
$operator | 可用于非-in wheres 的运算符 (!= , = , > 等)。 |
$value | 过滤器值。 |
仓库函数
以下示例将使用一个名为 User
的假设 Eloquent 模型。
get (array $options = [])
获取所有 User
行
getById ($id, array $options = [])
通过主键获取一个 User
getRecent (array $options = [])
按 created_at
降序获取 User
行
getRecentWhere (string $column, mixed $value, array $options = [])
获取 User
行,其中 $column=$value
,并按 created_at
降序排列
getWhere (string $column, mixed $value, array $options = [])
获取 User
行,其中 $column=$value
getWhereArray (array $clauses, array $options = [])
通过多个 where 子句获取 User
行 ([$column1 => $value1, $column2 => $value2]
)
getWhereIn (string $column, array $values, array $options = [])
获取 User
行,其中 $column
可以是 $values
中给出的任何值
getLatest (array $options = [])
获取最新的 User
getLatestWhere (string $column, mixed $value, array $options = [])
获取 $column=$value
的最新 User
delete ($id)
通过主键删除 User
行
deleteWhere ($column, $value)
删除 User
行,其中 $column=$value
deleteWhereArray (array $clauses)
通过多个 where 子句删除 User
行 ([$column1 => $value1, $column2 => $value2]
)