欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

laravel框架中的Model操作數據庫,相比DB類有什么明顯的優(yōu)越性嗎?

謝彥文2年前13瀏覽0評論

引言

我們推薦使用laravel的eloquentorm模型操作數據庫表,因為特性更為豐富,組裝更為靈活,在編程層面操作數據的來來去去非常直觀。而有些場景不可避免地與原生交互,我們本期就來梳理一下DB門面相關的那些方法。

學習時間

系統(tǒng)提供了DB門面用于原生的SQL操作,在程序內引入下面的類:

useIlluminate\Support\Facades\DB;

該類的定義很簡單,標準的門面注冊方法:

classDBextendsFacade{protectedstaticfunctiongetFacadeAccessor(){return'db';}}

僅實現了getFacadeAccessor方法,這些類處于同一個命名空間下的Facade.php文件內。

DB門面既可以使用querybuilder的鏈式操作,也可以用于執(zhí)行原生查詢。舉幾個例子。比如刪除users表:

DB::statement('droptableusers');

帶參數綁定的SQL查詢語句:

DB::select('select*fromcontactswherevalidated=?',[1]);

或者使用鏈式操作,獲取所有滿足條件的記錄:

$users=DB::table('users')->get();

當然了,還有經常用到的多表聯合查詢,復雜的查詢過濾條件:

DB::table('users')->join('contacts',function($join){$join->on('users.id','=','contacts.user_id')->where('contacts.type','donor');})->get();

CRUD

上一節(jié)是一些簡單示例,下面我們說一說增刪改查的用法。先說查詢語句,如果在數據庫優(yōu)化上做的比較好的一些SQL固定寫法,可以使用原生方法固化下來。比如簡單的:

$users=DB::select('select*fromusers');

該方法會返回一個標準對象的集合。擴展一下,帶有查詢條件的SQL原生語句,為了防止SQL注入,使用參數綁定的方式:

$usersOfType=DB::select('select*fromuserswheretype=?',[$type]);

當然也可以使用PDO常用的方式占位:

$usersOfType=DB::select('select*fromuserswheretype=:type',['type'=>$userType]);

插入新數據,其實與上述的帶有占位符參數綁定的SQL查詢語句類似,只是SQL語法不同而已:

DB::insert('insertintocontacts(name,email)values(?,?)',['salt','salt@lot.com']);

更新數據也是一樣的:

$countUpdated=DB::update('updatecontactssetstatus=?whereid=?',[1,$id]);

當然了,刪除語句僅僅需要where子句的條件參數綁定,其他與查詢select無異:

$countDeleted=DB::delete('deletefromcontactswherearchived=?',[1]);

寫在最后

本文通過對laravelDB門面的增刪改查用法,向大家展示了基本的參數綁定的用法。一般我們不推薦使用原生SQL語句操作數據庫,提倡大家把數據庫操作集中到模型層,充分利用eloquentorm的性能。

Happycoding:-)

我是@程序員小助手,持續(xù)分享編程知識,。