下面由laravel教程欄目給大家推薦一個laravel極速完成增刪改查的第三方包,希望對需要的朋友有所幫助!
推薦一個實用的laravel包https://github.com/osindex/LaravelControllerTrait
可以通過命令行直接生成model、controller和migrate文件,并且添加了很多常用的篩選過濾方法,不到一分鐘就能寫完簡單的增刪改查
特別是對查詢的優(yōu)化,基本不用單獨加接口
laravel-controller-trait
install
composer?require?osi/laravel-controller-trait
useage
###artisan
php?artisan?trait:controller php?artisan?trait:model
###controller&&route
use?OsiLaravelControllerTraitTraitsControllerBaseTrait;?//?trait use?AppAdmin;?//model?file class?AdminsController?extends?Controller { ????use?ControllerBaseTrait; ????public?function?__construct(Admin?$model) ????{ ????????$this->model?=?$model; ????????$this->resource?=?'OsiLaravelControllerTraitResourcesResource'; ????????$this->collection?=?'OsiLaravelControllerTraitResourcesCollection'; ????????$this->functions?=?get_class_methods(self::class); ????} } Route::resources(['admins'?=>?'AdminsController']); #以上完成,即提供了常規(guī)的增刪改查方法 #【1.10】新增批量更新 post:api/admins/batch request()->all():?[ ????['id'=>1,'field'=>'xxx','field2'=>xxx], ????['id'=>2,'field'=>'x2x','field2'=>x2x] ] #【1.11】剝離基礎(chǔ)返回類 use?OsiLaravelControllerTraitTraitsResponseBaseTrait;?//?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":"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對應(yīng)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) 集合的查詢相對數(shù)據(jù)庫較為簡單?僅包括集合支持的相關(guān)方法?具體查閱以下函數(shù) 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.
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載。
THE END
喜歡就支持一下吧
相關(guān)推薦