php - todas - laravel migration add column
¿Cómo ejecuto migraciones para un entorno específico en laravel? (4)
Estoy configurando una nueva aplicación con laravel (Laravel 4), y tengo algunos problemas para configurar la base de datos mediante migraciones
Hice un archivo de migración con:
artisan migrate:make --table="jobs" --create jobs
Lo que creó un archivo en la base de datos / migraciones como se esperaba, hice algunos mods a esto, y lo encendí usando
artisan migrate --env=local
Pero me sale la respuesta de "Nothing to migrate"
Si trato de ejecutar sin --env=local
, usa el archivo database.php en la carpeta de configuración (no en la carpeta local / staging / production) que no queremos usar, ya que no será específico del entorno.
Lo primero que pensé fue en Aceptar, tal vez necesito poner la migrate:make
env en migrate:make
call, así que lo intenté, pero recibí un error que decía que no podía crear el archivo de migración. Entonces pensé que no tiene sentido hacer migraciones basadas en env de todos modos ... deberían crearse genéricamente, y simplemente ejecutarse en una base por env, por lo que al final, todos los entornos usan los mismos scripts de migración.
Así que estoy un poco atascado ahora a dónde ir desde aquí
Debe especificar el entorno antes del comando migrar.
artisan --env=local migrate
La ejecución de la artisan help
muestra el formato en el que deben seguir los comandos.
artisan help
Usage:
[options] command [arguments]
Me di cuenta de una solución para ejecutar migrate
para diferentes bases de datos. Básicamente, el comando artisan migrate --env=local
no funciona. Pero podemos definir una nueva cadena de conexión en config/database.php
. Por ejemplo:
<?php
''mysql_testing'' => [
''driver'' => ''mysql'',
''host'' => env(''DB_TESTING_HOST''),
''database'' => env(''DB_TESTING_DATABASE''),
''username'' => env(''DB_TESTING_USERNAME''),
''password'' => env(''DB_TESTING_PASSWORD''),
''charset'' => ''utf8'',
''collation'' => ''utf8_unicode_ci'',
''prefix'' => ''prefix_'',
],
Y especifique la --database
cuando --database
la --database
artisan migrate
esta manera:
php artisan migrate --database=mysql_testing
Espero que esto ayude :)
Resuelto.
La solución fue simplemente editar local / database.php (o production / database.php, etc.), asegurándose de que la variable de ruta de las migraciones apunte a la ubicación que se migrate:make
es crear los archivos de migración, solo cambie
''application'' => __DIR__.''/../database/migrations'',
a
''application'' => DIR.''/../../database/migrations'',
Si modifica una migración después de ejecutarla, primero debe revertir la migración.
php artisan migrate:rollback
Sigue ejecutándolo hasta que la migración que has cambiado se revierta. Alternativamente, puede restablecer todo su esquema con
php artisan migrate:reset
Pero luego tendrá que llamar a sus migraciones como de costumbre para actualizarlas.
php artisan migrate
Finalmente puedes restablecer y luego migrar llamando
php artisan rebuild
También tenga en cuenta que generalmente es una mala práctica modificar sus migraciones después de que se hayan realizado, a menos que literalmente las haya realizado. Una vez implementado, no debe modificarlo, sino crear un nuevo archivo de migración.
Espero que esto ayude.
Edición: De alguna manera me perdí el indicador Laravel 4. Creo que la mayoría de estos comandos aún funcionan, pero es posible que deba ajustarlos.