我有 2 个表vendors
和 partners
vendors
表仅存储某些公司的名称,partners
表存储为某些公司工作的用户。所以结构是这样的:
供应商
| id | name |
+------+---------------+
| 1 | Vendor-1 |
| 2 | Vendor-2 |
| 3 | Vendor-3 |
合作伙伴
| id | user_name | password |vendor_id | is_owner | is_admin | is_technitian |
+----+------------+-----------+----------+------------+------------+---------------+
| 1 | abc | ^&ASKJHA | 1 | 1 | 1 | 0 |
| 2 | def | ^&ASKJHA | 2 | 1 | 1 | 0 |
| 3 | ghi | ^&ASKJHA | 1 | 0 | 1 | 0 |
| 4 | jkl | ^&ASKJHA | 3 | 1 | 1 | 0 |
| 5 | mno | ^&ASKJHA | 1 | 0 | 0 | 1 |
| 6 | pqr | ^&ASKJHA | 2 | 0 | 1 | 0 |
| 7 | stu | ^&ASKJHA | 1 | 0 | 0 | 1 |
| 8 | vwx | ^&ASKJHA | 2 | 0 | 0 | 1 |
| 9 | yz | ^&ASKJHA | 3 | 0 | 0 | 1 |
正如您在上面看到的,一个合作伙伴是任何供应商的所有者,其余人则作为该供应商的员工。
我正在使用 Eloquent ORM,并且我已经为合作伙伴和供应商定义了模型。我想在供应商模型中添加一个 owner
方法,以便我可以直接访问任何供应商对象的所有者。我想知道的是如何在我的模型定义中关联它。它可行还是我需要对我的数据库结构进行一些更改?
class Vendor extends Model{
/**
* Get all the users for this vendor
*/
public function users(){
$this->hasMany(Partner::class);
}
public function owner(){
// how do i relate one owner from partner model who has is_owner == 1
}
}
最佳答案
尝试使用 where()
public function owner(){
$this->hasOne(Partner::class)->where('is_owner', true);
}
您可能必须指定关系中的外键。
关于mysql - Eloquent 模型 : Define on-to-one relationship using flag on child table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42594921/