W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Laravel 讓連接數(shù)據(jù)庫和執(zhí)行查找變得相當(dāng)容易。數(shù)據(jù)庫相關(guān)配置文件都在 config/database.php
。 在這個(gè)文件你可以定義所有的數(shù)據(jù)庫連接,以及指定默認(rèn)的數(shù)據(jù)庫連接。默認(rèn)文件中已經(jīng)有所有支持的數(shù)據(jù)庫系統(tǒng)例子了。
目前 Laravel 支持四種數(shù)據(jù)庫系統(tǒng): MySQL、Postgres、SQLite、以及 SQL Server。
有時(shí)候你可能希望使用特定數(shù)據(jù)庫連接進(jìn)行 SELECT 操作,同時(shí)使用另外的連接進(jìn)行 INSERT 、 UPDATE 、以及 DELETE 操作。 Laravel 讓這些變得輕松簡單,并確保你不論在使用原始查找、查找構(gòu)建器、或者是 Eloquent ORM 使用的都是正確的連接。
來看看如何配置讀取/寫入連接,讓我們來看以下的例子:
'mysql' => [ 'read' => [ 'host' => '192.168.1.1', ], 'write' => [ 'host' => '196.168.1.2' ], 'driver' => 'mysql', 'database' => 'database', 'username' => 'root', 'password' => '', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '',],
注意我們加了兩個(gè)鍵值到配置文件數(shù)組中: read
及 write
。 兩個(gè)鍵值都包含了單一鍵值的數(shù)組:host
。read
及 write
的其余數(shù)據(jù)庫配置會(huì)從mysql
數(shù)組中合并。 所以,如果我們想要覆寫配置值,只要將選項(xiàng)放入 read
和 write
數(shù)組即可。 所以在上面的例子里, 192.168.1.1
將被用作「讀取」連接,而 192.168.1.2
將被用作「寫入」連接。數(shù)據(jù)庫憑證、 前綴、字符編碼配置、以及其他所有的配置會(huì)共用 mysql
數(shù)組里的配置。
如果配置好數(shù)據(jù)庫連接,就可以通過 DB
facade 執(zhí)行查找。
$results = DB::select('select * from users where id = ?', [1]);
select
方法會(huì)返回一個(gè) array
結(jié)果。
You may also execute a query using named bindings:
$results = DB::select('select * from users where id = :id', ['id' => 1]);
DB::insert('insert into users (id, name) values (?, ?)', [1, 'Dayle']);
DB::update('update users set votes = 100 where name = ?', ['John']);
DB::delete('delete from users');
注意:
update
和delete
語法會(huì)返回在操作中所影響的數(shù)據(jù)筆數(shù)。
DB::statement('drop table users');
你可以使用 DB::listen
方法,去監(jiān)聽查找的事件:
DB::listen(function($sql, $bindings, $time){ //});
你可以使用 transaction
方法,去執(zhí)行一組數(shù)據(jù)庫事務(wù)處理的操作:
DB::transaction(function(){ DB::table('users')->update(['votes' => 1]); DB::table('posts')->delete();});
注意: 在
transaction
閉包若拋出任何異常會(huì)導(dǎo)致事務(wù)自動(dòng)回滾。
有時(shí)候你可能需要自己開始一個(gè)事務(wù):
DB::beginTransaction();
你可以通過 rollback
的方法回滾事務(wù):
DB::rollback();
最后,你可以通過 commit
的方法提交事務(wù):
DB::commit();
若要使用多個(gè)連接,可以通過 DB::connection
方法取用:
$users = DB::connection('foo')->select(...);
你也可以取用原始底層的 PDO 實(shí)例:
$pdo = DB::connection()->getPdo();
有時(shí)候你可能需要重新連接到特定的數(shù)據(jù)庫:
DB::reconnect('foo');
如果你因?yàn)槌^了底層 PDO 實(shí)例的 max_connections
的限制,需要關(guān)閉特定的數(shù)據(jù)庫連接,可以通過 disconnect
方法:
DB::disconnect('foo');
Laravel 可以在內(nèi)存里訪問這次請求中所有的查找語句。然而在有些例子下要注意,比如一次添加 大量的數(shù)據(jù),可能會(huì)導(dǎo)致應(yīng)用程序耗損過多內(nèi)存。 如果要啟用日志,可以使用 enableQueryLog
方法:
DB::connection()->enableQueryLog();
要得到執(zhí)行過的查找紀(jì)錄數(shù)組,你可以使用 getQueryLog
方法:
$queries = DB::getQueryLog();
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: