• 技术文章 >php框架 >Laravel

    推荐一个laravel极速完成增删改查的第三方包

    藏色散人藏色散人2020-08-20 13:13:14转载1067

    下面由Laravel教程栏目给大家推荐一个laravel极速完成增删改查的第三方包,希望对需要的朋友有所帮助!

    推荐一个实用的laravel包https://github.com/osindex/LaravelControllerTrait

    可以通过命令行直接生成Model、Controller和migrate文件,并且添加了很多常用的筛选过滤方法,不到一分钟就能写完简单的增删改查
    特别是对查询的优化,基本不用单独加接口

    laravel-controller-trait

    install

    composer require osi/laravel-controller-trait

    useage

    ###artisan

    php artisan trait:controller
    php artisan trait:model

    ###controller&&route

    use Osi\LaravelControllerTrait\Traits\ControllerBaseTrait; // trait
    use App\Admin; //model file
    class AdminsController extends Controller
    {
        use ControllerBaseTrait;
    
        public function __construct(Admin $model)
        {
            $this->model = $model;
            $this->resource = '\Osi\LaravelControllerTrait\Resources\Resource';
            $this->collection = '\Osi\LaravelControllerTrait\Resources\Collection';
            $this->functions = get_class_methods(self::class);
        }
    }
    
    Route::resources(['admins' => 'AdminsController']);
    #以上完成,即提供了常规的增删改查方法
    
    #【1.10】新增批量更新
    post:api/admins/batch
    request()->all(): [
        ['id'=>1,'field'=>'xxx','field2'=>xxx],
        ['id'=>2,'field'=>'x2x','field2'=>x2x]
    ]
    
    #【1.11】剥离基础返回类
    
    use Osi\LaravelControllerTrait\Traits\ResponseBaseTrait; // trait 附带以下方法
    
    dataSuccess
    created
    accepted
    noContent
    badRequest
    unauthorized
    forbidden
    unprocesableEtity
    success

    filter

    /message?filter={"created_at":{"from":"2016-02-20","to":"2016-02-24 23:59:59"}, "id":{"operation":"not in", "value":[2,3,4]}}
    /message?filter={"user_id":{"operation":"in", "value":[null,2,3,4]}}
    /message?filter={"id":{"from":2,"to":5}}
    /message?filter={"id":{"to":5}} or /message?filter={"id":{"operation":"<=","value":5}}
    /message?filter={"updated_at":{"isNull":true}}
    /message?filter={"answer":{"operation":"like","value":"Partial search string"}}
    /message?filter={"answer":"Full search string"}
    /message?filter={"user.name":"asd"} # 关联搜索 whereHas
    /message?filter={"id":1}
    
    # 暂时只支持单字段排序
    /message?sort=id
    /message?sort=-id
    /message?sort=user.name
    
    # 关联搜索
    /message?expand=user 
    response: { "id": 1, "message": "some message", "user_id": 1, ... "user": { "id": 1, "name": "Some username", ... } }
    
    # 关联搜索子集,获取特定字段
    /message?expand=archives,user.recordable:id/status
    
    # 【1.8】新增scope搜索
    //User Model
    <?php
    
    新增允许的filterScopes属性
    protected $filterScopes = ['QueryLike'];
    // laravel实现姓名或电话搜索
    public function scopeQueryLike($query, $param)
    {
        return $query->where(function ($querySec) use ($param) {
            return $querySec->where('name', 'like', '%' . $param . '%')->orWhere('phone', 'like', '%' . $param . '%');
        });
    }
    /user?filter={"QueryLike":2333}
    
    # 【1.9】新增JSON搜索(jsoncontains,jsonlength) 
    ##注:目前仅有jsonlength 支持type属性
    /message?filter={"json->paramA":"233"}
    /message?filter={"json->array":{"operation":"jsonlength","type":">","value":5}}
    /message?filter={"json->array":{"operation":"jsoncontains","value":5}}
    
    # 【1.11】 filterExpand 用法
    ## 一般我们使用expand对应with方法 如 `model->with('app')` === `?expand=app`
    因此 可以使用 filterExpand 完成 `model->with(['app'=>function($q) use($id){$q->where('id',$id)}])` 的类似方法
    /message?expand=app&filterExpand={'app.created_at': { 'operation': '>=', 'value': 'now()' },'app.id': 1}
    
    # 【2.0】 collection 集合增加筛选及分页方法
    #collect()->setFilterAndRelationsAndSort($request)->paginate((int) $request->pageSize ?? 15)
    集合的查询相对数据库较为简单 仅包括集合支持的相关方法 具体查阅以下函数
    setFilter

    【2.1】batch批量更新修改

    #原
    post:api/model/batch
    request()->all(): [
        ['id'=>1,'field'=>'xxx','field2'=>xxx],
        ['id'=>2,'field'=>'x2x','field2'=>x2x]
    ]
    #新增兼容 data对象包裹
    request()->all(): [
        'data'=>
        [
            ['id'=>1,'field'=>'xxx','field2'=>xxx],
            ['id'=>2,'field'=>'x2x','field2'=>x2x]
        ]
    ]
    添加"operation":"in"  对null的支持  
    "col":{"operation":"in", "value":[null,2,3,4]}

    func

    Don not code normal controller func.

    以上就是推荐一个laravel极速完成增删改查的第三方包的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:learnku,如有侵犯,请联系admin@php.cn删除
    专题推荐:laravel
    上一篇:教你离线升级 Laravel Homestead 4.0.0 下一篇:记录一下使用Laravel-s抵御百度爬虫的经历
    大前端线上培训班

    相关文章推荐

    • laravel如何使用中间件实现禁止未登录用户访问页面• 如何使用Laravel snappy生成PDF并集成到Laravel-admin• 关于Laravel表单验证提示设置多语言• 教你离线升级 Laravel Homestead 4.0.0

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网