Laravel 5.4 Migración de tablas específicas


Respuestas:


133

Primero debe crear un migrationarchivo para su tabla como:

public function up()
    {
        Schema::create('test', function (Blueprint $table) {
            $table->increments('id');
            $table->string('fname',255);
            $table->string('lname',255);
            $table->rememberToken();
            $table->timestamps();
        });
    }

Después de crear la prueba carpeta en migraciones carpeta entonces recién creado migración movido / copiado de prueba de carpeta y ejecutar a continuación comando en su / cmd terminales como:

php artisan migrate --path=/database/migrations/test/

Gracias. Esto es exactamente lo que estaba buscando.
sadiq

4
php artisan migrate --path = database / migrations / test / funcionó para mí
Joyal

Si esto no funciona, tiene una mejor respuesta en stackoverflow.com/questions/19102197/…
Hari Harker

76

debe agregar la ruta a su archivo de migración para actualizar solo esta tabla y ejecutar

php artisan migrate:refresh --path=/database/migrations/fileName.php

1
Buen trabajo, hombre. Nada funcionó, pero tu solución funcionó. Muchas gracias.
Vipertecpro

Exactamente lo que estaba buscando :) Gracias amigo
VishalParkash

algunas veces será database / migrations / fileName.php sin la primera barra invertida
Ahmed Aboud

Vale la pena mencionar que con una actualización, todos sus datos desaparecen. Debe guardar los datos en su base de datos como una exportación e importarlos después de la actualización si desea conservar sus datos.
Taranis

@Taranis Solo los datos de la tabla que está actualizando, no todos
Wissem SASSI

54

Solo mire la migrationstabla en su base de datos, habrá una lista del nombre del archivo de migración y el valor del número de lote.

Suponga que tiene la siguiente estructura,

id     migration                                           batch

1      2014_10_12_000000_create_users_table                  1 
2      2014_10_12_100000_create_password_resets_table        1
3      2016_09_07_103432_create_tabel_roles                  1

Si solo desea revertir la 2016_09_07_103432_create_tabel_rolesmigración, cambie el valor del lote de migración a 2, que es el más alto entre todos, y luego ejecute lo siguiente.

php artisan migrate:rollback

Aquí solo se revertirá la tabla con el valor de lote 2. Ahora, realice cambios en esa tabla y ejecute el siguiente comando de consola.

php artisan migrate

El valor del lote en la migrationstabla define el orden de las migraciones. cuando se revierte, las migraciones que son las más recientes o que tienen el valor de lote más alto se revierten primero y luego otras. Por lo tanto, puede cambiar el valor en la base de datos y luego revertir un archivo de migración en particular.

Aunque no es una buena idea cambiar el número de lote cada vez debido a la relación entre la estructura de la tabla, podemos usar este caso para algunos casos donde la reversión de una sola tabla no viola la integridad entre las tablas.

Espero que entiendas.


@MartneyAcha Estoy feliz de que tengas una solución a tu problema ¡¡Salud !!
Sagar Gautam

Buena explicación. Si tiene una relación de clave externa en su tabla, eso no funcionará
Ogbonna Vitalis

@OgbonnaVitalis Gracias, será una forma más fácil para las mesas independientes. La respuesta aceptada proporciona una forma exacta de revertir y migrar una sola tabla. para múltiples tablas independientes funcionará.
Sagar Gautam

14

si usa la pestaña para autocompletar

php artisan migrate --path='./database/migrations/2019_12_31_115457_create_coworking_personal_memberships_table.php'

no funciona para mí, usando zsh
excavación

8

Debe colocar los archivos en un nuevo directorio (por ejemplo: seleccionado) y luego aplicar

php artisan migrate  --path=/database/migrations/selected

si necesita deshacer:

php artisan migrate:rollback  --path=/database/migrations/selected

Nota:

php artisan migrate:refresh

esto revertirá y luego migrará todos los archivos de migraciones en el directorio predeterminado (/ database / migrations)


No es necesario crear un nuevo directorio, puede poner directamente el nombre del archivo como '--path = / database / migrations / fileName.php'.
Wissem SASSI

8

Puedes ejecutar un comando como este

php artisan migrate --path=/database/migrations/2020_04_10_130703_create_test_table.php

7
php artisan help migrate

Verás la opción:

--path [= PATH] La ruta a los archivos de migraciones que se ejecutarán

Por cierto, probablemente pueda indicar la carpeta raíz del archivo que desea migrar:

php artisan migrate --path=/database/migrations/sample.php

O bien, puede crear una nueva carpeta en las migraciones y luego migrar todos los archivos de migración que desee dentro de ella:

php artisan migrate --path=/database/migrations/new_folder

te perdiste una 's'. ¡Deberían ser 'migraciones'! php artisan migrate --path = / database / migrations / new_folder
Pasindu Jayanath

php artisan migrate --path = / database / migrations / new_folder / need the last '/'
Pasindu Jayanath

5

Solo quería publicar otra solución, que creo que vale la pena mencionar.

  1. Busque la fila con su nombre de migración en la tabla de migraciones y BORRELA. Debería verse así: 2016_06_01_000001_create_oauth_auth_codes_table
  2. Elimine su tabla de la base de datos, por ejemplo, DROP TABLE oauth_auth_codes
  3. Ejecute php artisan migrate

Migrará solo la mesa que necesita y no tocará nada más



3

Elimine la tabla y elimine su registro de la tabla de migración.

Después de eso, simplemente ejecute la migración nuevamente:

php artisan migrate

3

Corrección: elimine la barra antes de la base de datos

$ php artisan migrate --path=database/migrations/migration.php

1
Nada para migrar.
zod

3

Migración de tablas específicas

php artisan migrate --path=/database/migrations/fileName.php

3

Si desea crear una tabla específica. Puede utilizar este código. Funciona para las versiones de laravel (5.x).

php artisan migrate:refresh --path=/database/migrations/fileName.php

2

O simplemente puede eliminar el nombre del archivo de migración de su base de datos, en la tabla "migraciones" y luego ejecutar: php artitsan migration


1

Puede intentar usar la opción --path = para definir la subcarpeta específica que desea ejecutar y colocar migraciones específicas allí.

Alternativamente, necesitaría eliminar la referencia y las tablas de la base de datos y las tablas de migraciones, lo cual no es ideal: /


1

Si desea crear otra tabla, simplemente cree un nuevo archivo de migración. Funcionará.

Si crea una migración users_tablecon el nombre id, first_name, last_name. Puede crear un archivo de migración como

    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('first_name',255);
            $table->string('last_name',255);
            $table->rememberToken();
            $table->timestamps();
        });
    }
    public function down()
    {
        Schema::dropIfExists('users');
    }

Si desea agregar otro archivo como "estado" sin migrar: actualice. Puede crear otro archivo de migración como "add_status_filed_to_users_table"

public function up()
{
    Schema::table('users', function($table) {
        $table->integer('status');
    });
} 

Y no olvide agregar la opción de reversión:

public function down()
{
    Schema::table('users', function($table) {
        $table->dropColumn('status');
    });
}

Y cuando ejecuta migrar con php artitsan migration, simplemente migra el nuevo archivo de migración.

Pero si agrega el "estado" archivado en el primer archivo de migración (users_table) y ejecuta la migración. No es nada para migrar. Necesitas correr php artisan migrate:refresh.

Espero que esto ayude.



1

php artisan migrate --path = / database / migrations / fileName.php

Simplemente siga la instrucción ejecute este nombre de archivo commant aquí debe ser el nombre de su tabla de migración Ejemplo: php artisan migrate --path = / database / migrations / 2020_02_21_101937_create_jobs_table.php



0

Solo puedes ejecutar este comando en tu terminal

php artisan migrate --path=database/migrations/2020_10_01_164611_create_asset_info_table.php

Después de las migraciones, debe poner el nombre de archivo en particular. o si tiene alguna carpeta dentro de la migración, simplemente agregue ese nombre de carpeta después de la migración.

Me gusta esto

php artisan migrate --path=database/migrations/yourfolder/2020_10_01_164611_create_asset_info_table.php

Espero que esto te ayude un poco. Codificación feliz.


-1

Primero debes hacer los siguientes comandos:

Paso 1:

php artisan migrate:rollback

Paso 2:

php artisan migrate

Su tabla volverá a estar en la base de datos.


Sería más útil si pusiera una pequeña descripción en cada paso. Esto ayudará a comprender al usuario lo que realmente está sucediendo. Esto parece un código de trampa que mágicamente hace que las cosas funcionen, pero el resultado puede ser desastroso en algunos casos.
Ashwani Agarwal

Lea atentamente la pregunta, la persona solicitó solo una tabla, su método revertirá todas las migraciones y luego creará todas las tablas. También php artisan migration:refreshsirve lo mismo.
Wajahat Hashmi
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.