Skip to main content

はじめに

Laravelは次のデータベースを公式にサポートしています。
  • MySQL / MariaDB
  • PostgreSQL
  • SQLite
  • SQL Server
あなたは生SQL、Query Builder、Eloquent ORMのどれでも同じ接続設定を使えます。
このページはデータベース接続の前提を扱います。実践的なクエリはQuery Builder、スキーマ管理はMigrations、初期データ投入はSeedingを参照してください。

設定

データベース設定は config/database.php に集約されています。 あなたは default で既定の接続名を選び、connections で接続ごとの詳細を定義します。
.env では少なくとも次を設定してください。
SQLiteを使う場合は DB_CONNECTION=sqliteDB_DATABASE のパスを設定します。

読み取り・書き込み接続の分離

読み取り(SELECT)と書き込み(INSERT / UPDATE / DELETE)を別ホストに分離したい場合、同じ接続内で readwrite を設定してください。
stickytrue にすると、同一リクエスト内で書き込み後の読み取りがwrite接続に固定されます。
レプリカ遅延がある構成では sticky を有効にすると、書き込み直後に古いデータを読むリスクを下げられます。

Pooled PostgreSQL 接続

PgBouncer のようなトランザクションモード接続プーリングを提供するマネージド PostgreSQL サービスを使う場合、pooled オプションと direct オプションを設定してください。
pooled を有効にすると、Laravel は自動的に振り分けを行います。 アプリケーションコード内で明示的に direct 接続を使いたい場合は、接続名に ::direct サフィックスを付けてください。

複数データベース接続

あなたは config/database.php に接続を複数定義し、DB::connection() で切り替えられます。

SQLクエリの実行

DB facadeはクエリ種別ごとに専用メソッドを持ちます。
ユーザー入力をSQL文字列に直接連結しないでください。必ずバインディング引数を使ってSQL injectionを防いでください。

クエリリスニング

実行されたSQLを追跡したいときは、Service Providerの boot()DB::listen() を登録してください。

transaction

複数の更新を1つの単位として扱うなら DB::transaction() を使ってください。 例外が発生するとLaravelが自動でロールバックします。
デッドロック再試行が必要なら attempts を指定できます。
手動で制御したい場合は beginTransaction / rollBack / commit を使ってください。

次のステップ

Query Builder

接続設定を使って安全にクエリを組み立てる方法を学びます。

Migrations

接続したデータベースのスキーマをバージョン管理する方法を学びます。

Seeding

開発・テスト用データを再現可能な形で投入する方法を学びます。
最終更新日 2026年6月23日