首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同一表上的Laravel多态关系(不同的用户管理器)

同一表上的Laravel多态关系(不同的用户管理器)
EN

Stack Overflow用户
提问于 2018-09-11 12:05:35
回答 1查看 451关注 0票数 0

我有用户表,每个用户都可以被分配给一个管理器。我有三种类型的经理(国家经理,地区经理和舰队经理)。一个地区经理可以有多个车队经理和国家经理,一个国家经理可以有多个车队经理。我的users表有列fleet_manager_id、country_manager_id、area_manager_id,它们引用用户表的id。问题是,我不知道如何在同一表上设置多态关系。移徙:

代码语言:javascript
复制
Schema::table('users', function (Blueprint $table) {
    $table->integer('fleet_manager_id')->unsigned()->nullable();
    $table->foreign('fleet_manager_id')->references('id')->on('users');
    $table->integer('country_manager_id')->unsigned()->nullable();
    $table->foreign('country_manager_id')->references('id')->on('users');
    $table->integer('area_manager_id')->unsigned()->nullable();
    $table->foreign('area_manager_id')->references('id')->on('users');
});

我的用户模型:

代码语言:javascript
复制
public function fleetManagers()
{
    return $this->hasMany(User::class, 'fleet_manager_id');
}

public function countryManager()
{
    return $this->belongsTo(User::class, 'country_manager_id');
}

public function areaManager()
{
    return $this->belongsTo(User::class, 'area_manager_id');
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-15 21:43:14

所以,这就是我到目前为止的解决方案:

代码语言:javascript
复制
public function managedByArea()
{
    return $this->hasMany(User::class, 'area_manager_id');
}

public function area_manager()
{
    return $this->belongsTo(User::class, 'area_manager_id');
}

public function managedByCountry()
{
    return $this->hasMany(User::class, 'country_manager_id');
}

public function country_manager()
{
    return $this->belongsTo(User::class, 'country_manager_id');
}
public function managedByFleet()
{
    return $this->hasMany(User::class, 'fleet_manager_id');
}

public function fleet_manager()
{
    return $this->belongsTo(User::class, 'fleet_manager_id');
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52275550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档