簡介
Laravel 官方支援下列資料庫:- MySQL / MariaDB
- PostgreSQL
- SQLite
- SQL Server
本頁著重於資料庫連線的前提。實務查詢請參閱 Query Builder,Schema 管理請見 Migrations,資料初始化請見 Seeding。
設定
資料庫設定集中在config/database.php。
你可以在 default 選擇預設連線名稱,並在 connections 中定義各連線的細節。
.env 至少設定以下項目:
DB_CONNECTION=sqlite 與 DB_DATABASE 的檔案路徑。
讀寫連線分離
若要將讀取(SELECT)與寫入(INSERT / UPDATE / DELETE)分別放到不同主機,可在同一連線內設定 read 與 write。
sticky 設為 true 時,同一次請求內於寫入後的讀取都會固定到 write 連線。
在後續請求中也防止讀到舊資料
sticky 只在同一次請求內有效。若希望在同一個 session 的後續請求中也能讀到剛寫入的資料,請將 PreventStaleDatabaseReads middleware 加入 web middleware group。
for。
StartSession middleware 之後執行。它不會影響其他 session 或其他資料庫連線的讀取。
暫時使用 write 連線讀取
若要將回呼內的讀取固定到 write 連線,請使用連線的usingWritePdo。
Pooled PostgreSQL 連線
當你使用如 PgBouncer 等提供交易模式連線池的託管 PostgreSQL 服務時,可以設定pooled 與 direct 選項。
pooled 後,Laravel 會自動分派:
若想在應用程式碼中明確使用 direct 連線,可在連線名稱後加上
::direct 後綴。
多重資料庫連線
你可以在config/database.php 定義多個連線,並透過 DB::connection() 切換。
執行 SQL 查詢
DB Facade 依照查詢類型提供對應的方法。
查詢監聽
若想追蹤已執行的 SQL,可在 Service Provider 的boot() 中註冊 DB::listen()。
Transaction
若要把多個更新視為一個單元,可使用DB::transaction()。
發生例外時 Laravel 會自動 rollback。
attempts。
beginTransaction / rollBack / commit。
下一步
Query Builder
學習如何在連線設定之上安全地組建查詢。
Migrations
學習如何對已連線的資料庫 schema 進行版本控管。
Seeding
學習如何以可重現的方式匯入開發 / 測試用資料。