下面由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
复制useOsi\\\\LaravelControllerTrait\\\\Traits\\\\ControllerBaseTrait;// traituseApp\\\\Admin;//model fileclassAdminsControllerextendsController{useControllerBaseTrait;publicfunction __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】剥离基础返回类useOsi\\\\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 Modelwhere(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
复制Donnot code normal controller func.