Laravel-Migration zum Hinzufügen eines Nullable-Attributs zur vorhandenen Tabellenspalte
P粉674757114
P粉674757114 2023-09-05 12:58:02
0
1
424

Ich habe begonnen, ein kleines persönliches Projekt zu Laravel 10 zu schreiben. Das Problem, auf das ich gestoßen bin, ist wie folgt:

  1. Ich habe eine Benutzertabelle mit einer Fremdschlüssel-UUID – Role_ID.
  2. Ich möchte dieser Spalte ein Nullable-Attribut hinzufügen, ohne die Tabelle zu löschen.
  3. Ich habe eine neue Migration erstellt, um die Änderungen vorzunehmen.
  4. Das Paket doctrine/dbal wird installiert, um (theoretisch) Spalten zu ändern.
  5. Mein Code in der Migration lautet wie folgt:
public function up(): void { Schema::table('users', function (Blueprint $table) { $table->foreignUuid('role_id')->nullable()->constrained('roles')->change(); }); } /*** Machen Sie die Migrationen rückgängig.*/ öffentliche Funktion down(): void { Schema::table('users', function (Blueprint $table) { $table->foreignUuid('role_id')->nullable(false)->constrained('roles')->change(); }); }

Aber wenn ich php artisan migrate ausführe, erhalte ich die folgende Fehlermeldung: SQLSTATE[42S21]: Spalte existiert bereits: 1060 Doppelter Spaltenname „role_id“ (Verbindung: MySQL, SQL: Alter Table Users Add Role_ID Char(36)) Null).

Für Vorschläge zur korrekten Änderung der Spalten wären wir sehr dankbar.

P粉674757114
P粉674757114

Antworte allen (1)
P粉068486220

您可以尝试以下操作:

Schema::table('users', function (Blueprint $table) { $table->char('role_id', 36)->nullable()->constrained('roles')->change(); });

或者可以使用原始的SQL语句:

DB::statement('ALTER TABLE users MODIFY role_id CHAR(36) NULL'); DB::statement('ALTER TABLE users ADD CONSTRAINT fk_users_role_id FOREIGN KEY (role_id) REFERENCES roles (id)');
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!