Verwenden Sie eine Laravel-Migrationstabelle pro Datenbank

Ich arbeite in einem Projekt, das mehrere Datenbanken verwendet. Anscheinend verwendet Laravel nur die Migrations-Tabelle in der Datenbank, die als Standard festgelegt ist. Ich möchte eine Migrations-Tabelle pro Datenbank, die die Migrationen protokolliert, die an dieser bestimmten Datenbank durchgeführt wurden. Ist das möglich

Ich habe die Datenbanken in der Konfiguration folgendermaßen definiert:

'connections' => [
    'db1' => array(
        'driver'    => 'mysql',
        'host'      => 'db1.host',
        'database'  => 'db1',
        'username'  => 'username',
        'password'  => 'password',
    ),
    'db2' => [
        'driver'    => 'mysql',
        'host'      => 'db2.host',
        'database'  => 'db2',
        'username'  => 'username',
        'password'  => 'password',
    ]
],

Ich habe auch die erste Datenbank (db1) zur Standarddatenbank gemacht

'default' => 'db1'

Ich installiere die Migrations-Tabelle auf beiden Datenbanken

artisan migrate:install --database=db1
artisan migrate:install --database=db2

Nachdem ich fortfahre, um ein paar datenbankspezifische Migrationen zu erstellen

Tabelle test1 in Datenbank db1 erstellen:

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateTest1Table extends Migration
{
    public function up()
    {
        Schema::connection('db1')->create('test1', function(Blueprint $table)
        {
            $table->increments('id')->unsigned();
        });
    }

    public function down()
    {
        Schema::connection('db1')->drop('test1');
    }
}

Tabelle test2 in Datenbank db2 erstellen:

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateTest2Table extends Migration
{
    public function up()
    {
        Schema::connection('db2')->create('test2', function(Blueprint $table)
        {
            $table->increments('id')->unsigned();
        });
    }

    public function down()
    {
        Schema::connection('db2')->drop('test2');
    }
}

Ich führe jetzt die Migrationen aus

artisan migrate
Erwartetes Ergebni db1.migrations
+-----------------------------+-------+
| migration                   | batch |
+-----------------------------+-------+
| create_test1_table_in_db1   |     1 |
+-----------------------------+-------+
db2.migrations
+-----------------------------+-------+
| migration                   | batch |
+-----------------------------+-------+
| create_test2_table_in_db2   |     1 |
+-----------------------------+-------+
Tatsächliches Ergebnis db1.migrations
+-----------------------------+-------+
| migration                   | batch |
+-----------------------------+-------+
| create_test1_table_in_db1   |     1 |
| create_test2_table_in_db2   |     1 |
+-----------------------------+-------+
db2.migrations
+-----------------------------+-------+
| migration                   | batch |
+-----------------------------+-------+
Empty set

Antworten auf die Frage(1)

Ihre Antwort auf die Frage