ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
config/database.php の構造
Laravel の DB 設定は 2 階建てです: config/database.php で接続定義 + .env で実値を注入。
// config/database.php
return [
'default' => env('DB_CONNECTION', 'mysql'),
'connections' => [
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'laravel'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => 'InnoDB',
],
'pgsql' => [
'driver' => 'pgsql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE'),
'charset' => 'utf8',
'schema' => 'public',
'sslmode' => 'prefer',
],
'sqlite' => [
'driver' => 'sqlite',
'database' => database_path('database.sqlite'),
'prefix' => '',
],
],
];
.env の書き方
# .env (MySQL)
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=myapp
DB_USERNAME=root
DB_PASSWORD=secret
# .env (PostgreSQL)
DB_CONNECTION=pgsql
DB_HOST=db.example.com
DB_PORT=5432
DB_DATABASE=myapp
DB_USERNAME=postgres
DB_PASSWORD=postgres
# .env (SQLite)
DB_CONNECTION=sqlite
# database/database.sqlite を touch するだけ
.env を変更したら必ずキャッシュクリア:
php artisan config:clear
php artisan config:cache # 本番ではキャッシュ
4 種類の DB ドライバ
| DB | driver | 必須拡張 | 用途 |
|---|---|---|---|
| MySQL / MariaDB | mysql | pdo_mysql | Web 系の標準 |
| PostgreSQL | pgsql | pdo_pgsql | 厳密な型、JSON / 配列 / 全文検索が強い |
| SQLite | sqlite | pdo_sqlite | テスト / ローカル開発 / 小規模アプリ |
| SQL Server | sqlsrv | pdo_sqlsrv | Windows / 既存 SQL Server 連携 |
SQLite で素早く始める
# 1. ファイルを作るだけ
touch database/database.sqlite
# 2. .env を書き換え
# DB_CONNECTION=sqlite
# DB_HOST / DB_PORT / DB_DATABASE / DB_USERNAME / DB_PASSWORD は不要(コメントアウト可)
# 3. マイグレーション
php artisan migrate
複数 DB 接続を使う
レポート用 DB が別サーバ、メインは MySQL、集計は PostgreSQL、といった構成も簡単です:
// config/database.php の connections に追加
'mysql_report' => [
'driver' => 'mysql',
'host' => env('DB_REPORT_HOST'),
'database' => env('DB_REPORT_DATABASE'),
'username' => env('DB_REPORT_USERNAME'),
'password' => env('DB_REPORT_PASSWORD'),
'charset' => 'utf8mb4',
],# .env
DB_REPORT_HOST=report-db.example.com
DB_REPORT_DATABASE=report
DB_REPORT_USERNAME=reader
DB_REPORT_PASSWORD=xxx// 使う側: Query Builder
$rows = DB::connection('mysql_report')
->table('daily_sales')
->where('date', '2026-01-01')
->get();
// Eloquent
class Sale extends Model
{
protected $connection = 'mysql_report';
protected $table = 'daily_sales';
}
// マイグレーション
Schema::connection('mysql_report')->create('daily_sales', function (Blueprint $table) {
$table->id();
$table->date('date');
$table->integer('amount');
});
Read / Write を分ける(読み書き分離)
マスター・スレーブ構成で参照を slave に流したい場合は read / write キーで分離できます:
'mysql' => [
'driver' => 'mysql',
'read' => [
'host' => [
'slave1.example.com',
'slave2.example.com',
],
],
'write' => [
'host' => 'master.example.com',
],
'sticky' => true, // 同一リクエスト内の書き込み後は read も master へ
'database' => 'myapp',
'username' => 'app',
'password' => env('DB_PASSWORD'),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
],
テーブル prefix と charset
| 項目 | 推奨値 | 備考 |
|---|---|---|
| charset | utf8mb4 | 絵文字 (4 byte 文字) 対応必須 |
| collation | utf8mb4_unicode_ci | 多言語対応の標準ソート |
| prefix | 空 or app_ | 共有 DB で衝突回避時のみ使用 |
| engine | InnoDB | トランザクション・外部キー対応 |
接続確認
# tinker で確認
php artisan tinker
>>> DB::connection()->getPdo()
=> PDO {#... }
>>> DB::connection('mysql_report')->getPdo()
=> PDO {#... }
# マイグレーションで確認
php artisan migrate:status
よくあるトラブル
| 症状 | 原因 | 対処 |
|---|---|---|
SQLSTATE[HY000] [2002] Connection refused | DB 未起動 / ホスト名間違い | systemctl start mysql / DB_HOST 確認 |
could not find driver | PHP 拡張未インストール | apt install php-mysql 等 |
Specified key was too long (utf8mb4 + index) | InnoDB 旧バージョン | AppServiceProvider::boot() で Schema::defaultStringLength(191) |
| .env 変更が効かない | config キャッシュ | php artisan config:clear |
FAQ
Q: パスワードを .env に書きたくない
A: AWS Secrets Manager / HashiCorp Vault と連携、または環境変数で OS 側から注入してください。
Q: 本番でだけ別 DB に切り替えたい
A: .env.production に DB_CONNECTION=pgsql、ローカル .env に DB_CONNECTION=sqlite という運用が定番です。
Q: prefix を後から付けたい
A: 既存テーブルがある状態で prefix を変えると参照できなくなります。マイグレーションでリネームしてから設定変更が安全です。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
同階層のページ
- インストールと設定
- クイックスタート & チュートリアル(初心者向け)
- クイックスタート & チュートリアル(中級者向け)
- ルーティング
- Bladeテンプレート(ビュー/レイアウト)
- コントローラー
- マイグレーションとテーブル定義
- データベースの設定
- Eloquentモデル (ORM)
- SQLとクエリビルダー
- バリデーション
- .envファイルの設定値へのアクセス
- 動作環境による分岐処理
- configフォルダ配下の設定値へのアクセス
- assetヘルパーを利用したpublicフォルダへのアクセス
- storageフォルダへのアクセス
- アプリケーション名の変更
- メンテナンス
- ログイン画面(認証システム)の作成
- ログインの必須化
- ログインユーザー情報の取得
- ルートの認証化
- 本番サーバーへのデプロイ方法
- 多言語化
- csrf_field
- ファイルのダウンロード
- CSVのアップロードおよび読み込み(maatwebsite/excel)
- ページタイトルの設定
- コマンド一覧
- エラー一覧
- SQLの実行ログ出力方法
- キャッシュのクリア
- Selectの結果の最初もしくは最後に任意の値を追加する方法
- ajaxでPOST通信する際の注意点
- ソーシャルログインの実装
- セッション情報の確認
- ログイン、ユーザー登録、パスワードリセット後のリダイレクト先の変更方法
- redirectやreturn viewにメッセージを付与する方法
- クッキー(cookie)の設定と取得
- クラスの再読み込み
- csrfの有効時間を変更する方法
- ViewComposerを用いてviewに共通の値を付与する方法
- View::shareを用いて共通の値を各ビューに渡す方法
- ミドルウェアを用いた処理の共通化
- Middleware内でAuth::check()などを使用する方法
- Controller以外でリダイレクトする方法
- セッションの値の取得/保存/更新/削除
- $requestの値を変更する方法
- 常時SSL化
- ページング(ページネーション)をする方法
- vue.jsとの連携
- Vue.jsと連携するSPA実行環境構築
- .envの値をvue.jsで参照する方法
- vue.jsを本番環境にリリースする方法
- could not find driver(Windows, MySQL編)
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?