2016-02-17 31 views
12

Korzystam z poniższego kodu w Konstruktorze schematów do tworzenia tabeli.Kreator schematów: Utwórz tabelę, jeśli nie istnieje

Schema::create('tblCategory', function (Blueprint $table) { 
    $table->increments('CategoryID'); 
    $table->string('Category', 40); 
    $table->unique('Category', 'tblCategory_UK_Category'); 
    $table->timestamps(); 
}); 

Tutaj jest problem, jeśli muszę utworzyć nową tabelę, wszystkie stare skrypty działają i pokazują, że tabela już istnieje.

Czy istnieje sposób utworzenia tabeli, jeśli nie istnieje za pomocą konstruktora schematu?

+0

Czy używasz nawet wbudowanego narzędzia do migracji laravel? – Morten

+0

tak, wersja 5.2.15. – Pankaj

+0

I uruchamiasz 'php artisan migrate'? Jeśli plik został uruchomiony poprawnie, powinien go zapisać w bazie danych, aby ponownie nie uruchamiał pliku. – Morten

Odpowiedz

25

Spróbuj

if (!Schema::hasTable('tblCategory')) { 
    // create the tblCategory table 
} 
+2

Możesz także zrobić 'if (Schema :: hasTable ('tblCategory')) {return; } 'przed dodaniem zamiast tego. –

2

Please check the answer here

Aby utworzyć nową tabelę istnieje tylko jeden czek przez funkcję laravel Schema hasTable.

Ale jeśli chcesz usunąć dowolną tabelę przed sprawdzeniem jej istnienia, Schemat ma funkcję o nazwie dropIfExists.

Schema::dropIfExists('table_name'); 

Spowoduje to upuszczenie tabeli, jeśli tabela będzie istnieć.