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