Ich entwickle ein Web mit Laravel 9. Ich habe den Befehl verwendet sail php make:migration add_bought_to_products_table
在产品表中添加一个名为“bought”的布尔列。当尝试使用 Eloquent 帮助程序修改值时 (Product::where('id', $product->id)->update(array('bought'=>true))
Der Wert in der Datenbank wurde nicht aktualisiert < /strong> Beim Betrachten stellte ich fest, dass das durch die Migration erstellte neue Feld „Kauf“ mit Schreibgeschützt markiert war: Es gibt keine entsprechende Tabellenspalte .
Der Migrationscode lautet wie folgt:
<?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'); }); } };
Hier ist ein Screenshot der Datenbank:
Ich habe mehrmals versucht, den Cache zu bereinigen, die Datenbank neu aufzubauen und ein Rollback durchzuführen und erneut zu migrieren. Das Seltsame ist, dass ich zuvor das Feld „Sichtbarkeit“ hinzugefügt habe und es perfekt funktioniert hat mit genau dem gleichen Code und den gleichen Schritten wie das betreffende Feld.
Wie kann man es lösen?
我只是重新启动了我的数据库工具,它就消失了。
在我绞尽脑汁之后,我通过简单地重新启动 docker 容器来解决了这个问题。看来这个问题与 Laravel 无关,而是与 Docker 有关!
对于遇到类似问题的任何人:确保结束 Docker 和所有容器并重新启动。