数据透视表不同的id

时间:2016-02-18 15:07:27

标签: php laravel lumen

我偶然发现了一些我无法解决的棘手问题。

我有两个模型,用户和雇主。

shouldInterceptRequest

雇主继承自用户表。雇主可以属于不同的中心,因此我在中心和医生之间存在ManyToMany关系。

          [User]
        /        
[Employer] 

Employer.php

   [User] (23)
     ^
     |
  [Employer]  ____________________________   [Center]
        ^----|   employers_has_centers    |----^
             |----------------------------| 
             |id |  employer  | center_id |
             |----------------------------| 
             | 1 | 23(user_id)|     2     |
             |____________________________|

现在我的问题是,当我尝试获取一个雇主并使用其抱怨的响应加载中心时

public function healthCenters()
{
    return $this->belongsToMany(HealthCenter::class);
}

我从不在任何列中使用Unknown column 'employer_health_center.employer_id' ,在进行CRUD操作时,我总是引用employer_id

当我尝试创建雇主推荐/附加到中心时,会出现此问题:

user_id

所以我假设默认情况下Laravel尝试从我的雇主模型中的列中获取id,是否有一种方法可以更改,以便它应该搜索Column not found: 1054 Unknown column 'employer_id&#039 列而不是id?

1 个答案:

答案 0 :(得分:0)

  

未知栏'employer_health_center.employer_id'

这是因为默认情况下,laravel尝试按照约定从表employers中获取主键。所以laravel会寻找一个id employer_id。因为,在您的表格中employer,您可以在关系中指定。

public function healthCenters()
{
    return $this->belongsToMany(HealthCenter::class, 'employer');
}

因此,如果它只是编码的初始阶段,我强烈建议您遵循约定优于配置。