Laravel 5.4 Migrazione di tabelle specifiche


Risposte:


136

Per prima cosa dovresti creare un migrationfile per la tua tabella come:

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

Dopo creare test di cartella in migrazioni cartella appena creata quindi la migrazione spostato / copiato in prova cartella ed eseguire sotto comando nel / cmd terminale come:

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

1
Grazie. Questo e 'esattamente quello che stavo cercando.
sadiq

4
php artisan migrate --path = database / migrations / test / ha funzionato per me
Joyal

Se questo non funziona, hai una risposta migliore su stackoverflow.com/questions/19102197/…
Hari Harker

86

è necessario aggiungere il percorso al file di migrazione per aggiornare solo questa tabella ed eseguire

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

1
Bel lavoro Uomo. Niente ha funzionato ma la tua soluzione ha funzionato. Grazie mille.
Vipertecpro

Esattamente stavo cercando :) Grazie
amico

alcune volte sarà database / migrations / fileName.php senza la prima barra rovesciata
Ahmed Aboud

Vale la pena ricordare che con un aggiornamento tutti i dati sono spariti. È necessario salvare i dati nel database come esportazione e importarli dopo l'aggiornamento se si desidera conservare i dati.
Taranis

@Taranis Solo i dati della tabella che non state aggiornando non tutti
Wissem SASSI

55

Basta guardare la migrationstabella nel database, ci sarà un elenco del nome del file di migrazione e del valore del numero di batch.

Supponiamo di avere la seguente struttura,

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

Se si desidera eseguire il rollback della 2016_09_07_103432_create_tabel_rolesmigrazione, modificare il valore del batch di migrazione su 2 che è il più alto tra tutti e quindi eseguire semplicemente quanto segue.

php artisan migrate:rollback

In questo caso verrà eseguito il rollback solo della tabella con valore batch 2. Ora, apporta le modifiche a quella tabella ed esegui il seguente comando della console.

php artisan migrate

Il valore batch nella migrationstabella definisce l'ordine delle migrazioni. quando esegui il rollback, le migrazioni più recenti o con il valore batch più alto vengono prima ripristinate e poi altre. Quindi, puoi modificare il valore nel database e quindi eseguire il rollback di un particolare file di migrazione.

Sebbene non sia una buona idea cambiare il numero di batch ogni volta a causa della relazione tra la struttura della tabella, possiamo utilizzare questo caso per alcuni casi in cui il rollback di una singola tabella non viola l'integrità tra le tabelle.

Spero che tu capisca.


@MartneyAcha Sono felice che tu abbia una soluzione al tuo problema Saluti !!
Sagar Gautam

Bella spiegazione. Se hai una relazione di chiave esterna nel tuo tavolo, non funzionerà
Ogbonna Vitalis

@OgbonnaVitalis Grazie, sarà un modo più semplice per i tavoli indipendenti. La risposta accettata fornisce il modo esatto per eseguire il rollback e migrare una singola tabella. per più tabelle indipendenti funzionerà.
Sagar Gautam

15

se utilizzi la scheda per il completamento automatico

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

9

Puoi eseguire un comando in questo modo

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

8

È necessario inserire i file in una nuova directory (es: selezionata) e quindi applicare

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

se hai bisogno di rollback:

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

Nota:

php artisan migrate:refresh

questo eseguirà il rollback e quindi migrerà tutti i file di migrazione nella directory predefinita (/ database / migrations)


Non è necessario creare una nuova directory, è possibile inserire direttamente il nome del file come '--path = / database / migrations / fileName.php'.
Wissem SASSI

7
php artisan help migrate

Vedrai l'opzione:

--path [= PATH] Il percorso dei file di migrazione da eseguire

A proposito, puoi probabilmente indicare la cartella principale del file che desideri migrare:

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

Oppure, puoi creare una nuova cartella in migrations, quindi migrare tutti i file di migrazione che desideri al suo interno:

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

ti sei appena perso una "s". Dovrebbero essere "migrazioni"! php artisan migrate --path = / database / migrations / new_folder
Pasindu Jayanath

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

5

Volevo solo pubblicare un'altra soluzione, che penso valga la pena menzionare.

  1. Trova la riga con il tuo nome di migrazione nella tabella delle migrazioni ed ELIMINA. Dovrebbe assomigliare a questo: 2016_06_01_000001_create_oauth_auth_codes_table
  2. Rimuovi la tua tabella dal database, ad esempio DROP TABLE oauth_auth_codes
  3. Esegui php artisan migrate

Migrerà solo il tavolo di cui hai bisogno e non toccherà nient'altro


4

Se vuoi creare una tabella specifica. Puoi usare questo codice. Funziona per le versioni laravel (5.x).

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


3

Elimina la tabella e rimuovi il relativo record dalla tabella di migrazione.

Dopodiché, esegui nuovamente la migrazione:

php artisan migrate

3

Correzione: rimuovere la barra prima del database

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

1
Niente da migrare.
Zod

3

Migrazione di tabelle specifiche

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

2

Oppure puoi semplicemente eliminare il nome del file di migrazione dal tuo database, nella tabella "migrations" e quindi eseguire: php artitsan migration


1

Puoi provare a utilizzare l'opzione --path = per definire la sottocartella specifica che desideri eseguire e inserire migrazioni specifiche lì.

In alternativa, dovresti rimuovere il riferimento e le tabelle dal database e dalle tabelle delle migrazioni, il che non è l'ideale: /


1

Se vuoi creare un'altra tabella, crea semplicemente un nuovo file di migrazione. Funzionerà.

Se crei una migrazione denominata users_tablecon id, first_name, last_name. Puoi creare un file di migrazione come

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

Se vuoi aggiungere un altro file come "stato" senza migrare: aggiorna. Puoi creare un altro file di migrazione come "add_status_filed_to_users_table"

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

E non dimenticare di aggiungere l'opzione rollback:

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

E quando esegui migrate with php artitsan migration , semplicemente la migrazione del nuovo file di migrazione.

Ma se aggiungi lo "stato" archiviato nel primo file mgration (users_table) ed esegui la migrazione. Non è niente da migrare. Hai bisogno di correre php artisan migrate:refresh.

Spero che questo aiuto.



1

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

Segui semplicemente le istruzioni per eseguire questo file di comando qui dovrebbe essere il nome della tua tabella di migrazione Esempio: php artisan migrate --path = / database / migrations / 2020_02_21_101937_create_jobs_table.php


1

Puoi eseguire questo comando solo nel tuo terminale

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

Dopo le migrazioni dovresti inserire il nome del file particolare. o se hai una cartella all'interno della migrazione, aggiungi semplicemente il nome della cartella dopo la migrazione.

Come questo

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

Spero che questo ti possa aiutare un po '. Codifica felice.



-1

Per prima cosa dovresti eseguire i seguenti comandi:

Passo 1:

php artisan migrate:rollback

Passo 2:

php artisan migrate

La tua tabella tornerà nel database.


Sarebbe più utile se mettessi una piccola descrizione in ogni passaggio. Questo aiuterà a capire l'utente cosa sta realmente accadendo. Sembra un codice cheat che magicamente fa funzionare le cose, ma in alcuni casi il risultato potrebbe essere disastroso.
Ashwani Agarwal

Si prega di leggere attentamente la domanda, la persona ha chiesto solo una tabella, il metodo ripristinerà tutte le migrazioni e quindi creerà tutte le tabelle. php artisan migration:refreshServe anche lo stesso.
Wajahat Hashmi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.