Hiroto's diary

プログラミング関連を書くかも

Laravelでデータベースの接続を指定してmigrateやdb:seedを実行する

特定の接続でmigratedb:seedを実行する方法。

--database=DATABASEを付けて実行すれば特定の接続で実行できる。


config/database.php

<?php
return [
    // 省略
    'connections' => [

        'sqlite' => [
            'driver'   => 'sqlite',
            'database' => database_path("database.sqlite"),
            'prefix'   => '',
        ],

        'mysql' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'database'  => env('DB_DATABASE', 'forge'),
            'username'  => env('DB_USERNAME', 'forge'),
            'password'  => env('DB_PASSWORD', ''),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
        ],

        'pgsql' => [
            'driver'   => 'pgsql',
            'host'     => env('DB_HOST', 'localhost'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset'  => 'utf8',
            'prefix'   => '',
            'schema'   => 'public',
        ],

        'sqlsrv' => [
            'driver'   => 'sqlsrv',
            'host'     => env('DB_HOST', 'localhost'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset'  => 'utf8',
            'prefix'   => '',
        ],

        'testing' => [
            'driver'   => 'sqlite',
            'database' => database_path("testing.sqlite"),
            'prefix'   => '',
        ],

    ],
  //省略
];

みたいな設定があってtestingでのみ実行したいなら

php artisan migrate --database=testing
php artisan db:seed --database=testing

で出来る。