web-dev-qa-db-fra.com

Générateur de schéma: Créer une table s'il n'en existe pas

J'utilise le code ci-dessous dans le Générateur de schéma pour créer la table.

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

Le problème est que, si je dois créer la nouvelle table, tous les anciens scripts s'exécutent et indiquent qu'une erreur existe déjà. 

existe-t-il un moyen de créer une table s'il n'existe pas en utilisant le générateur de schéma?

20
Pankaj

Essaye ça

if (!Schema::hasTable('tblCategory')) {
     // create the tblCategory table
}
40
paranoid

S'il vous plaît vérifier la réponse ici

Pour créer une nouvelle table, une seule vérification est effectuée par la fonction Laravel Schema hasTable.

Mais si vous voulez supprimer une table avant de vérifier son existence, Schema a une fonction appelée dropIfExists.

Schema::dropIfExists('table_name');

Il laissera tomber la table si la table existera.

5
DB::transaction(function () {
        // Create your table here with schema builder.
});

Si une exception est levée dans la transaction Closure, la transaction sera automatiquement annulée. Donc, essayer de créer une table déjà existante va générer une erreur. La plupart des transactions de base de données devraient avoir cette fermeture à Laravel.

https://laravel.com/docs/5.6/database

0
Hexxefir