複数のデータベースを使用する設定

更新日 2025-06-03 15:41:52
laravel

複数データベース設定方法


.env

.envファイルに複数定義する
# デフォルト
DB_CONNECTION=mydb
DB_HOST=xxx.xxx.xxx.xxx
DB_PORT=xxxx
DB_DATABASE=xxxx
DB_USERNAME=xxxx
DB_PASSWORD=xxxx

# セカンド
DB_CONNECTION2=mydb2
DB_HOST2=xxx.xxx.xxx.xxx
DB_PORT2=xxxx
DB_DATABASE2=xxxx
DB_USERNAME2=xxxx
DB_PASSWORD2=xxxx


database.php

database.phpに複数定義する
use Illuminate\Support\Str;

return [
'default' => env('DB_CONNECTION', 'mysql'),

'connections' => [
// デフォルト
'mydb' => [
'driver' => 'pgsql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'prefix_indexes' => true,
'search_path' => 'public',
'sslmode' => 'prefer',
],

// セカンド
'mydb2' => [
'driver' => 'pgsql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST2', '127.0.0.1'),
'port' => env('DB_PORT2', '5432'),
'database' => env('DB_DATABASE2', 'forge'),
'username' => env('DB_USERNAME2', 'forge'),
'password' => env('DB_PASSWORD2', ''),
'charset' => 'utf8',
'prefix' => '',
'prefix_indexes' => true,
'search_path' => 'public',
'sslmode' => 'prefer',
],
],
];

モデルの設定

$connectionに接続名を設定する
namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
use HasFactory;

/** @var string DB接続設定 */
protected $connection = 'mydb2';

// ...




マイグレーションの設定

$connectionに接続名を設定する
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
protected $connection = 'mydb2'; // 追加

/**
* Run the migrations.
*
* @return void
*/
public function up()
{
// ...