gfcd / laravel-query-builder-api
基于 Unlu/laravel-api-query-builder 的 Laravel API 查询构建器包
v1.3.6
2018-05-23 22:28 UTC
Requires
- php: >=5.4
- illuminate/database: >=5.0.0
- illuminate/http: >=5.0.0
- illuminate/support: >=5.0.0
This package is not auto-updated.
Last update: 2024-09-29 05:41:57 UTC
README
composer require gfcd/laravel-query-builder-api
简介
基于 selahattinunlu 库 的 Laravel 库
此库对 selahattinunlu 库进行了一些修改。
新增功能
- 在查询字符串中添加了 FILTER 参数,因此列被封装在 filter 属性中。
/api/users?filter={name=se*,age!=18}&order_by=age,asc&limit=2&columns=name,age,city_id&includes=city
- 在 QueryBuilder.php 中插入了一个新方法。该方法由 applyDefaultRelationships() 调用,并接收一个模型关系的数组作为参数。这将执行预加载。
class User {
public function addressList()
{
return $this->hasMany(Address::class);
}
}
class UserController {
private $relationshipMethods = ["addressList"];
public function index(Request $request)
{
$queryBuilder = new QueryBuilder(new User, $request);
return response()->json([
'data' => $queryBuilder
->applyDefaultRelationships($this->relationshipMethods)
->build()
->paginate()
]);
}
}
- 在 QueryBuilder.php 中插入了一个新方法。该方法由 $applyDefaultFilters 调用,并接收三个属性的数组作为参数
class UserController {
//eq: you can ommit operator, by default is "="
private $extraParameters = [
[
"column" => "name of column that you want add on server side, not on client side."
"operator" => "the operator that you want use."
"value" => "the value you want insert".
]
]
public function index(Request $request)
{
$queryBuilder = new QueryBuilder(new User, $request);
return response()->json([
'data' => $queryBuilder
->applyDefaultFilters($this->extraParameters)
->build()
->paginate()
]);
}
}
这对于那些使用用户认证的项目非常有用,您希望根据 user_id 或您想在查询中添加的任何列从数据库中检索数据。
服务提供者
将此行添加到 config/app.php 文件的服务提供者中
'Gfcd\Laravel\Api\ApiQueryBuilderServiceProvider'.
发布配置文件
如果您想更改默认的 limit、orderBy 和 excludedParameters 参数,请在终端运行此命令
php artisan vendor:publish --provider="Gfcd\Laravel\Api\ApiQueryBuilderServiceProvider"
其他
其他配置可以使用 Unlu/laravel-api-query-builder 进行,只需将 'Unlu' 改为 'Gfcd'。