mysql - Eloquent 模型 : Define on-to-one relationship using flag on child table

标签 mysql laravel laravel-5 eloquent

我有 2 个表vendorspartners

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/

相关文章:

php - 如果尝试进入登录屏幕,Laravel 5 会重定向到主页

mysql - HAVING 在 Laravel 中抛出错误,而不是在 PHPMyAdmin 中

MYSQL - 如何获得零值

具有 2 TB 数据的 MySQL 服务器。

sql - MySQL 不首先显示最短的结果

php - DDBB 结构,以便我可以管理播放列表 - 当前、上一个、下一个

jquery - 将表中的相关字段显示到数据表中问题

php - Laravel 集合搜索不区分大小写

php - Laravel 验证 - 以逗号分隔的字符串输入为数组

在同一页面上使用多个表单进行 Laravel 请求验证