Database Larave数据库模型自身之间的关系

Database Larave数据库模型自身之间的关系,database,laravel,model,relationship,Database,Laravel,Model,Relationship,我对如何设计一个具有相互关系的模型有些怀疑 在我的例子中,我有一个id为且coach_id为的users表。所有用户都有一个id(很明显),但具有role Runner的用户也有coach_id指的是具有role coach的用户 第一步是如何在laravel表迁移中创建键,然后,如何在用户模型中添加正确的关系。首先,确保coach\u id可以为空: $table->unsignedInteger('coach_id')->nullable(); 如果模型id使用大整数,请使用unsigne

我对如何设计一个具有相互关系的模型有些怀疑

在我的例子中,我有一个id为且coach_id为的users表。所有用户都有一个id(很明显),但具有role Runner的用户也有coach_id指的是具有role coach的用户


第一步是如何在laravel表迁移中创建键,然后,如何在用户模型中添加正确的关系。

首先,确保
coach\u id
可以为空:

$table->unsignedInteger('coach_id')->nullable();
如果模型id使用大整数,请使用
unsignedbiginger

然后定义外键:

$table->foreign('coach\u id')
->引用('id')
->关于('用户')
->onDelete('set null');
使用
set null
而不是
cascade
,因为删除coach时不希望删除相关用户

并在
用户
模型中设置一对多关系:

public function coach(){
返回$this->belongsTo(self::class);
}
从Laravel>7,可以在移植中使用快捷方式:

$table->foreigned('coach\u id')
->可空()
->受限('用户')
->onDelete('set null');