LoginSignup
1
1

More than 3 years have passed since last update.

Laravel: 複数のDBに接続

Last updated at Posted at 2020-01-19

mysqlとSQLite3の同時使用例

php.iniの場所

$ php -r "echo phpinfo();" | grep "php.ini"
php.ini
//使用するDBをコメントアウト
extension=pdo_mysql
extension=sqlite3

httpdの再起動
データベースの作成

設定

.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE_1={データベース名}
DB_USERNAME=root
DB_PASSWORD=null

DB_CONNECTION=sqlite
DB_DATABASE_2={パス/データベースファイル名}
config/database.php
'default' => env('DB_CONNECTION_1', 'mysql'),
//略
'sqlite' => [
    'driver' => 'sqlite',
    'database' => env('DB_DATABASE_2', database_path({フォルダパス})),
    'prefix' => '',
],
'mysql' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', 'localhost'),
    'database' => env('DB_DATABASE_1', 'forge'),
    'username' => env('DB_USERNAME_1', 'forge'),
    'password' => env('DB_PASSWORD_1', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'strict' => false,
    'engine' => null,
],
migration
//デフォルトDBにはconnectonメソッドは必要なし
Schema::connection('sqlite')->create({テーブル名}, function (Blueprint $table) {
}

データベースを指定してマイグレーション

$ php artisan migration --database=sqlite

Modelでの接続設定

Model
class Datas extends Model
{
    protected $connection = 'sqlite';
}
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1