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

 5135

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


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


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

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

特别是对查询的优化,基本不用单独加接口

laravel-controller-trait

install

  1. composer require osi/laravel-controller-trait

useage

###artisan

  1. php artisan trait:controller
  2. php artisan trait:model

###controller&&route

  1. use Osi\LaravelControllerTrait\Traits\ControllerBaseTrait; // trait
  2. use App\Admin; //model file
  3. class AdminsController extends Controller
  4. {
  5.     use ControllerBaseTrait;
  6.     public function __construct(Admin $model)
  7.     {
  8.         $this->model = $model;
  9.         $this->resource = '\Osi\LaravelControllerTrait\Resources\Resource';
  10.         $this->collection = '\Osi\LaravelControllerTrait\Resources\Collection';
  11.         $this->functions = get_class_methods(self::class);
  12.     }
  13. } 
  14. Route::resources(['admins' => 'AdminsController']);
  15. #以上完成,即提供了常规的增删改查方法
  16. #【1.10】新增批量更新
  17. post:api/admins/batch
  18. request()->all(): [
  19.     ['id'=>1,'field'=>'xxx','field2'=>xxx],
  20.     ['id'=>2,'field'=>'x2x','field2'=>x2x]
  21. ]
  22. #【1.11】剥离基础返回类
  23. use Osi\LaravelControllerTrait\Traits\ResponseBaseTrait; // trait 附带以下方法
  24. dataSuccess
  25. created
  26. accepted
  27. noContent
  28. badRequest
  29. unauthorized
  30. forbidden
  31. unprocesableEtity
  32. success

filter


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

【2.1】batch批量更新修改

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

func

  1. Don not code normal controller func.


本文网址:https://www.zztuku.com/detail-7919.html
站长图库 - 推荐一个laravel极速完成增删改查的第三方包
申明:如有侵犯,请 联系我们 删除。

评论(0)条

您还没有登录,请 登录 后发表评论!

提示:请勿发布广告垃圾评论,否则封号处理!!

    编辑推荐