una seeders seeder migrar migraciĆ³n migracion especifica ejecutar crear php laravel-4 database-migration

php - seeders - migrar laravel



Use una tabla de migraciones de Laravel por base de datos (1)

Utilice el parámetro --database con el comando --database y almacene las migraciones para cada base de datos en directorios separados.

Puede tener directorios separados en la app/database/migrations para cada una de sus bases de datos (en su caso db1 y db2 ) y almacenar las migraciones apropiadas en cada directorio. Entonces podrías ejecutar las migraciones de esta manera:

artisan migrate --database="db1" --path="app/database/migrations/db1" artisan migrate --database="db2" --path="app/database/migrations/db2"

De esta manera, su tabla de migrations será independiente para cada base de datos.

Si desea hacer un esfuerzo adicional y automatizar el proceso, puede crear su comando personalizado que ejecutará todas las migraciones a la vez. Puede crear el comando de esta manera:

artisan command:make MigrateAllCommand --command=migrate:all

Esto creará una nueva app/commands/MigrateAllCommand.php archivo app/commands/MigrateAllCommand.php . El método de fire tu comando se vería así:

public function fire() { foreach (Config::get(''database.connections'') as $name => $details) { $this->info(''Running migration for "'' . $name . ''"''); $this->call(''migrate'', array(''--database'' => $name, ''--path'' => ''app/database/migrations/'' . $name)); } }

Esto funcionará siempre que el nombre de la clave de configuración de la base de datos sea el mismo que el del directorio de migración. Entonces puede simplemente llamarlo así:

artisan migrate:all

Puede consultar los Documentos de comandos de Laravel para obtener más información.

Trabajo en un proyecto que usa múltiples bases de datos. Parece que Laravel solo usa la tabla de migraciones en la base de datos establecida como predeterminada. Me gustaría una tabla de migraciones por base de datos que registre las migraciones que se han realizado a esa base de datos específica. es posible?

He definido las bases de datos en la configuración de esta manera:

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

También hice la primera base de datos (db1) la predeterminada

''default'' => ''db1''

Instalo la tabla de migraciones en ambas bases de datos

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

Después de eso, procedo a crear un par de migraciones específicas de bases de datos

Crear tabla test1 en la base de datos db1:

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''); } }

Crear tabla test2 en la base de datos db2:

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''); } }

Ahora corro las migraciones

artisan migrate

Gastos esperados

db1.migrations

+-----------------------------+-------+ | migration | batch | +-----------------------------+-------+ | create_test1_table_in_db1 | 1 | +-----------------------------+-------+

db2.migrations

+-----------------------------+-------+ | migration | batch | +-----------------------------+-------+ | create_test2_table_in_db2 | 1 | +-----------------------------+-------+

Resultado real

db1.migrations

+-----------------------------+-------+ | migration | batch | +-----------------------------+-------+ | create_test1_table_in_db1 | 1 | | create_test2_table_in_db2 | 1 | +-----------------------------+-------+

db2.migrations

+-----------------------------+-------+ | migration | batch | +-----------------------------+-------+ Empty set