为现有表列添加可为空属性的Laravel迁移
P粉674757114
P粉674757114 2023-09-05 12:58:02
[MySQL讨论组]
<p>我已经开始在Laravel 10上编写一个小的个人项目。我遇到的问题如下:</p> <ol> <li>我有一个用户表,其中有一个外键UUID - role_id。</li> <li>我想在该列上添加nullable属性,而不需要删除表。</li> <li>我创建了一个新的迁移来进行修改。</li> <li>安装了doctrine/dbal包,以便(理论上)更改列。</li> <li>我在迁移中的代码如下:</li> </ol> <pre class="brush:php;toolbar:false;">public function up(): void { Schema::table('users', function (Blueprint $table) { $table-&gt;foreignUuid('role_id')-&gt;nullable()-&gt;constrained('roles')-&gt;change(); }); } /** * Reverse the migrations. */ public function down(): void { Schema::table('users', function (Blueprint $table) { $table-&gt;foreignUuid('role_id')-&gt;nullable(false)-&gt;constrained('roles')-&gt;change(); }); }</pre> <p>但是当我运行php artisan migrate时,我得到了以下错误 - SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'role_id' (Connection: mysql, SQL: alter table users add role_id char(36) null)。</p> <p>非常感谢任何关于如何正确修改列的建议。</p>
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)');

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号