gfcd/laravel-query-builder-api

基于 Unlu/laravel-api-query-builder 的 Laravel API 查询构建器包

v1.3.6 2018-05-23 22:28 UTC

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 库进行了一些修改。

新增功能

  1. 在查询字符串中添加了 FILTER 参数,因此列被封装在 filter 属性中。
/api/users?filter={name=se*,age!=18}&order_by=age,asc&limit=2&columns=name,age,city_id&includes=city
  1. 在 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()
        ]);
    }
}
  1. 在 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'。