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

更新日 2023-01-14 10:50:24
laravel
.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に定義する

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',
        ],
    ],
];

モデルの設定


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';
 
    // ...

マイグレーションの設定


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()
    {
        // ...