複数のデータベースを使用する設定
更新日 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()
{
// ...