PHP開(kāi)發(fā)框架Laravel數(shù)據(jù)庫(kù)操作方法總結(jié)
一、讀/寫(xiě)連接
有時(shí)您可能希望使用一個(gè)SELECT語(yǔ)句的數(shù)據(jù)庫(kù)連接,,另一個(gè)用于插入、更新和刪除語(yǔ)句。Laravel使這微風(fēng),將始終使用正確的連接是否使用原始查詢,查詢生成器或雄辯的ORM。
如何讀/寫(xiě)連接應(yīng)該配置,讓我們看看這個(gè)例子:
'mysql' => array('read' => array('host' => '192.168.1.1'),'write' => array('host' => '196.168.1.2'),'driver' => 'mysql','database' =>'database','username' => 'root','password' => '','charset' => 'utf8','collation' => 'utf8_unicode_ci','prefix' => '')
注意,兩個(gè)鍵添加到配置陣列:讀和寫(xiě)。這兩個(gè)鍵有數(shù)組值包含一個(gè)關(guān)鍵:主機(jī)。其余的讀寫(xiě)數(shù)據(jù)庫(kù)選項(xiàng)從主mysql連接將合并后的數(shù)組。所以,我們只需要將物品放入讀取和寫(xiě)入數(shù)組如果我們希望覆蓋主要數(shù)組中的值。所以,在這種情況下,192.168.1.1將被用作“讀”連接,while192.168.1.2將被用作“寫(xiě)”連接。數(shù)據(jù)庫(kù)憑證、前綴、字符集和所有其他選項(xiàng)在主mysql數(shù)組將跨兩個(gè)共享連接。
二、運(yùn)行查詢
一旦你已經(jīng)配置了數(shù)據(jù)庫(kù)連接,你可以使用DB運(yùn)行查詢類。
運(yùn)行一個(gè)Select查詢
$results = DB::select('select * from users where id = ?', array(1));
結(jié)果的選擇方法總是返回一個(gè)數(shù)組。
運(yùn)行一個(gè)Insert語(yǔ)句
DB::insert('insert into users (id, name) values (?, ?)', array(1, 'Dayle'));
運(yùn)行一個(gè)更新語(yǔ)句
DB::update('update users set votes = 100 where name = ?', array('John'));
運(yùn)行一個(gè)Delete語(yǔ)句
DB::delete('delete from users');
注意:update和delete語(yǔ)句返回的行數(shù)的影響操作。
運(yùn)行一個(gè)通用聲明
DB::statement('drop table users');
查詢事件監(jiān)聽(tīng)
你可以查詢事件監(jiān)聽(tīng)使用DB::聽(tīng)方法:
DB::listen(function($sql, $bindings, $time){ //});
三、數(shù)據(jù)庫(kù)事務(wù)
運(yùn)行在一個(gè)數(shù)據(jù)庫(kù)事務(wù)的一組操作,您可以使用事務(wù)方法:
DB::transaction(function(){ DB::table('users')->update(array('votes'
=> 1)); DB::table('posts')->delete();});
注意:在事務(wù)拋出的任何異常關(guān)閉將導(dǎo)致自動(dòng)事務(wù)將回滾
有時(shí)你可能需要開(kāi)始一個(gè)事務(wù):
DB::beginTransaction();
你可以通過(guò)回滾事務(wù)回滾方法:
DB::rollback();
最后,您可以通過(guò)提交方法:提交一個(gè)事務(wù)
DB::commit();
四、訪問(wèn)連接
當(dāng)使用多個(gè)連接,你可以訪問(wèn)它們通過(guò)DB::連接方法:
$users = DB::connection('foo')->select(...);
你也可以訪問(wèn)原始的、潛在的PDO實(shí)例:
$pdo = DB::connection()->getPdo();
有時(shí)你可能需要重新連接到一個(gè)給定的數(shù)據(jù)庫(kù):
DB::reconnect('foo');
如果你需要斷開(kāi)從給定的數(shù)據(jù)庫(kù)將超過(guò)底層PDO實(shí)例'smax_connections限制,使用斷開(kāi)連接方法:
DB::disconnect('foo');
五、查詢?nèi)罩?/strong>
默認(rèn)情況下,Laravel日志保存在內(nèi)存的所有查詢運(yùn)行當(dāng)前的請(qǐng)求。然而,在某些情況下,例如當(dāng)插入的行數(shù),這可能會(huì)導(dǎo)致應(yīng)用程序使用多余的內(nèi)存。禁用日志,你可以使用disableQueryLog方法:
DB::connection()->disableQueryLog();
o得到一組執(zhí)行的查詢,您可以使用getQueryLog方法:
$queries = DB::getQueryLog();
- Laravel框架源碼解析之模型Model原理與用法解析
- Laravel框架源碼解析之入口文件原理分析
- Laravel框架源碼解析之反射的使用詳解
- Laravel 框架控制器 Controller原理與用法實(shí)例分析
- Laravel框架數(shù)據(jù)庫(kù)CURD操作、連貫操作總結(jié)
- Laravel框架中擴(kuò)展函數(shù)、擴(kuò)展自定義類的方法
- Laravel框架路由配置總結(jié)、設(shè)置技巧大全
- Laravel 5 框架入門(mén)(一)
- Laravel 5框架學(xué)習(xí)之?dāng)?shù)據(jù)庫(kù)遷移(Migrations)
- Laravel 5框架學(xué)習(xí)之向視圖傳送數(shù)據(jù)
- Laravel 5框架學(xué)習(xí)之用戶認(rèn)證
- Laravel框架集合用法實(shí)例淺析
相關(guān)文章
在TP5數(shù)據(jù)庫(kù)中四個(gè)字段實(shí)現(xiàn)無(wú)限分類的示例
今天小編就為大家分享一篇在TP5數(shù)據(jù)庫(kù)中四個(gè)字段實(shí)現(xiàn)無(wú)限分類的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10php 中htmlentities導(dǎo)致中文無(wú)法查詢問(wèn)題
php htmlentities用于接受一個(gè)字符串并將該字符串轉(zhuǎn)換為對(duì)應(yīng)的HTML實(shí)體,這篇文章主要介紹了php htmlentities導(dǎo)致中文無(wú)法查詢問(wèn)題,,需要的朋友可以參考下2018-09-09ThinkPHP框架整合微信支付之Native 掃碼支付模式一圖文詳解
這篇文章主要介紹了ThinkPHP框架整合微信支付之Native 掃碼支付模式一,結(jié)合圖文形式詳細(xì)分析了thinkPHP整合微信支付接口的掃碼支付功能相關(guān)操作步驟、實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下2019-04-04php 使用預(yù)處理語(yǔ)句操作數(shù)據(jù)庫(kù)
今天這篇文章的內(nèi)容其實(shí)也是非常基礎(chǔ)的內(nèi)容,不過(guò)在現(xiàn)代化的開(kāi)發(fā)中,大家都使用框架,已經(jīng)很少人會(huì)去自己封裝或者經(jīng)常寫(xiě)底層的數(shù)據(jù)庫(kù)操作代碼了。所以這回我們就來(lái)復(fù)習(xí)一下數(shù)據(jù)庫(kù)中相關(guān)擴(kuò)展中的預(yù)處理語(yǔ)句內(nèi)容。2021-06-06php一次性刪除前臺(tái)checkbox多選內(nèi)容的方法
如何一次性刪除前臺(tái)checkbox多選的內(nèi)容,在本文將為大家介紹下php中時(shí)如何實(shí)現(xiàn)的,感興趣的你可不要錯(cuò)過(guò)了哈2013-09-09php頁(yè)面跳轉(zhuǎn)session cookie丟失導(dǎo)致不能登錄等問(wèn)題的解決方法
thinkphp開(kāi)發(fā)的一個(gè)項(xiàng)目,登錄成功后又跳轉(zhuǎn)到登錄頁(yè)面,在提交信息后輸出session都是正常的,沒(méi)有問(wèn)題,但是頁(yè)面跳轉(zhuǎn)后,session出現(xiàn)丟失現(xiàn)象,無(wú)法正常完成登陸,下面通過(guò)本文給大家解答下2016-12-12