Laravel迁移使用constrained()方法时如何指定自定义外键名称
Laravel 8 使用 constrained() 方法时自定义外键名称
解决方案
完全可以在使用constrained()简写方法的同时手动指定外键名称,只需在链式调用中追加name()方法,传入你想要设置的外键名称作为参数即可:
$table->foreignId('really_long_table_name_id') ->constrained() ->name('custom_foreign_key_name') // 此处填写自定义的外键名称 ->onUpdate('cascade') ->onDelete('cascade');
补充说明
- MySQL默认对外键名称的长度限制为64个字符,自定义外键名称时注意不要超过该限制,避免触发报错
- 该写法在Laravel 8及以上版本均支持,和长格式写法的外键定义效果完全一致,不会影响外键的关联逻辑和级联操作规则
- 若表名、字段名组合本身较长,建议统一外键命名规则,比如用
关联表缩写_字段_fk这类精简格式,从根源上避免长度溢出问题
内容的提问来源于stack exchange,提问作者Giles Bennett
相关产品推荐
相关产品推荐

