Énoncé du problème
Valeurs par défaut pour les colonnes d'horodatage dans Laravel les migrations utilisant Schema Builder sont définies sur « 0000-00-00 00:00:00 » ; comment pouvons-nous modifier cela en 'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP' ?
Solution
Utiliser DB::raw() pour incorporer CURRENT_TIMESTAMP comme valeur par défaut d'une colonne :
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));
Alternativement, après Laravel 5.1.25, vous pouvez utiliser la méthode useCurrent() directement sur la colonne timestamp :
$table->timestamp('created_at')->useCurrent();
Pour MySQL, incluez la clause ON UPDATE en utilisant DB : raw() ou, à partir de Laravel 8.36.0, la méthode useCurrentOnUpdate() :
$table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate();
Attentions
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP(0)'));
Merci à @andrewhl pour avoir identifié le problème PostgreSQL de Laravel 4.x et à @ChanakaKarunarathne pour le raccourci useCurrentOnUpdate().
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!