為現有表格列新增可為空屬性的Laravel遷移
P粉674757114
P粉674757114 2023-09-05 12:58:02
0
1
410

我已經開始在Laravel 10上編寫一個小型的個人專案。我遇到的問題如下:

  1. 我有一個用戶表,其中有一個外鍵UUID - role_id。
  2. 我想在該列上新增nullable屬性,而不需要刪除表。
  3. 我創建了一個新的遷移來進行修改。
  4. 安裝了doctrine/dbal包,以便(理論上)可以更改列。
  5. 我在遷移中的程式碼如下:
public function up(): void { Schema::table('users', function (Blueprint $table) { $table->foreignUuid('role_id')->nullable()->constrained('roles')->change(); }); } /*** 反轉遷移。*/ public function down(): void { Schema::table('users', function (Blueprint $table) { $table->foreignUuid('role_id')->nullable(false)->constrained('roles')->change(); }); }

但是當我執行php artisan migrate時,我得到了以下錯誤- SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'role_id' (Connection: mysql, SQL: alter table idus addole_g ) null)。

非常感謝任何關於如何正確修改列的建議。

P粉674757114
P粉674757114

全部回覆 (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)');
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板
    關於我們 免責聲明 Sitemap
    PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!