Laravel 数据库模型自身之间的关系
Posted
技术标签:
【中文标题】Laravel 数据库模型自身之间的关系【英文标题】:Larave database model relation between itself 【发布时间】:2021-06-08 11:20:37 【问题描述】:我对如何设计一个具有自身关系的模型有一些疑问。
就我而言,我有一个带有 id 和 coach_id 的用户表。所有用户都有一个 id(显然),但角色 Runner 的用户也有 coach_id 引用角色为 Coach 的用户。
第一步是如何在 laravel 表迁移中创建 key,然后是如何在 User 模型中添加正确的关系。
【问题讨论】:
【参考方案1】:首先,确保coach_id
可以为NULL:
$table->unsignedInteger('coach_id')->nullable();
如果模型 id 使用大整数,则使用 unsignedBigInteger
。
然后定义一个外键:
$table->foreign('coach_id')
->references('id')
->on('users')
->onDelete('set null');
使用set null
而不是cascade
,因为您不想在删除coach 时删除相关用户。
并在User
模型中建立一对多关系:
public function coach()
return $this->belongsTo(self::class);
从 Laravel > 7 你可以在迁移中使用快捷方式:
$table->foreignId('coach_id')
->nullable()
->constrained('users')
->onDelete('set null');
【讨论】:
以上是关于Laravel 数据库模型自身之间的关系的主要内容,如果未能解决你的问题,请参考以下文章