Je développe un web en utilisant Laravel 9. J'ai utilisé la commande sail php make:migration add_bought_to_products_table
在产品表中添加一个名为“bought”的布尔列。当尝试使用 Eloquent 帮助程序修改值时 (Product::where('id', $product->id)->update(array('bought'=>true))
La valeur dans la base de données n'a pas été mise à jour < /strong> En la regardant, j'ai constaté que le nouveau champ "Achat" créé par la migration était marqué Lecture seule : il n'y a pas de colonne de tableau correspondante .
Le code de migration est le suivant :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::table('products', function (Blueprint $table) { $table->boolean('bought'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('products', function (Blueprint $table) { $table->dropColumn('bought'); }); } };
Voici une capture d'écran de la base de données :
J'ai essayé plusieurs fois de nettoyer le cache, de reconstruire la base de données, de restaurer et de migrer à nouveau. Ce qui est bizarre, c'est que j'ai déjà ajouté le champ "Visibilité" et cela a parfaitement fonctionné en utilisant exactement le même code et les mêmes étapes que le champ en question.
Comment le résoudre ?
Je viens de redémarrer mon outil de base de données et il a disparu.
Après m'être creusé la tête, j'ai résolu le problème en redémarrant simplement le conteneur Docker. Il semble que ce problème n’ait rien à voir avec Laravel, mais avec Docker !
Pour toute personne rencontrant des problèmes similaires : Assurez-vous de mettre fin à Docker et à tous les conteneurs, puis de redémarrer.