web-dev-qa-db-fra.com

Rendre la colonne non Nullable dans une migration Laravel

J'écris une migration pour créer certaines colonnes d'une table nullable maintenant. Pour la fonction down, je souhaite bien sûr redéfinir ces colonnes not nullable. J'ai parcouru la schema builder docs , mais je ne voyais pas comment faire. 

Toute aide serait appréciée.

89
bilalq

Avant Laravel 5, il n'existait aucune méthode native de Laravel pour modifier une colonne de table existante à l'aide du générateur de schéma. Vous devez utiliser des requêtes brutes pour cela.

Cependant, à partir de Laravel 5, vous pouvez utiliser:

$table->...->nullable(false)->change();
158
TLGreg

A partir de Laravel 5, il est possible d’inverser cela de manière native - il suffit de passer false comme argument à nullable ().

par exemple.

$table -> string('foo') -> nullable(false) -> change();
32
Matt McDonald

D'abord exécuter ceci:

composer require doctrine/dbal

Créez ensuite une migration qui modifiera la table de la manière suivante:

php artisan make:migration fix_whatever_table_name_here 

public function up()
{
    Schema::table('table_name', function (Blueprint $table) {
        $table->type('column')->nullable(false)->change();
    });
}

public function down()
{
    Schema::table('table_name', function ($table) {
        $table->dropColumn('column');
    });
}
0
funerr