【发布时间】:2020-10-23 13:51:06
【问题描述】:
首先是一些上下文
我正在开发一个公司应用程序,在这个应用程序中,用户可以访问多个公司。 同一用户可以分配给每个公司中的一个员工。为了防止用户创建多个用户帐户,用户将通过数据透视表“连接”到公司和“公司员工”。
问题
我在 laravel 中有一个带有 users() 属性的 Company 模型,它按预期工作(因为它返回所有通过数据透视表连接到业务的用户)。
在我的用户模型中,我有一个 employee() 属性,这将返回 所有 通过数据透视表链接到用户的员工,包括未链接到所请求业务的员工/不具有与请求的业务 ID 相同的 business_fk 值。
我需要通过数据透视表获取与请求的业务和用户相关联的单个员工。
所以我想我需要通过 Company 模型中 users() 属性中的 business_fk 键过滤 User -> Employee 关系,但我不知道如何。
型号:公司
public function users()
{
return $this->belongsToMany(User::class, 'user_employee_pivot', 'employee_fk', 'user_fk')
->withPivot('ID');
}
模型:用户
public function employee()
{
return $this->belongsToMany(Employee::class, 'user_employee_pivot', 'user_fk', 'employee_fk')
->withPivot('ID');
}
简化表结构
TABLE users
ID PK INT
username STRING
--------
TABLE company
ID PK INT
name STRING
--------
TABLE employee
ID PK INT
fullname STRING
company_fk FK INT (referencing to company table PK)
--------
TABLE user_business_pivot
ID PK INT
user_fk FK INT (referencing to user table PK)
company_fk FK INT (referencing to company table PK)
--------
TABLE user_employee_pivot
ID PK INT
user_fk FK INT (referencing to user table PK)
employee_fk FK INT (referencing to employee table PK)
如果我不够清楚,请告诉我。我将相应地编辑我的问题。
【问题讨论】:
-
我的回答对你有帮助还是你还有问题?
标签: mysql laravel eloquent foreign-keys