透视 table 不同的 id
Pivot table different id
我偶然发现了一些我无法解决的棘手问题。
我有 2 个模型,用户和雇主。
[User]
/
[Employer]
雇主继承自用户 table。雇主可以属于不同的中心,所以我在中心和医生之间有一个 ManyToMany 关系。
[User] (23)
^
|
[Employer] ____________________________ [Center]
^----| employers_has_centers |----^
|----------------------------|
|id | employer | center_id |
|----------------------------|
| 1 | 23(user_id)| 2 |
|____________________________|
Employer.php
public function healthCenters()
{
return $this->belongsToMany(HealthCenter::class);
}
现在我的问题是,当我尝试获取一个雇主并使用它抱怨的响应加载中心时
Unknown column 'employer_health_center.employer_id'
我从不在任何专栏中使用我的 employer_id
,我在进行 CRUD 操作时总是参考 user_id
。
当我尝试为中心创建雇主 refer/attach 时,出现了这个问题:
Column not found: 1054 Unknown column 'employer_id'
所以我假设默认情况下 Laravel 尝试从我的 Employer 模型的列中获取 id,有没有办法改变它应该搜索 user_id
列而不是 id?
Unknown column 'employer_health_center.employer_id'
这是因为默认情况下,laravel 尝试遵循从 table employers
中选取主键的约定。所以 laravel 会寻找一个 id employer_id
。因为在您的 table 中它是 employer
,您可以在关系中指定它。
public function healthCenters()
{
return $this->belongsToMany(HealthCenter::class, 'employer');
}
因此,如果这只是您编码的初始阶段,我强烈建议您遵循约定优于配置。
我偶然发现了一些我无法解决的棘手问题。
我有 2 个模型,用户和雇主。
[User]
/
[Employer]
雇主继承自用户 table。雇主可以属于不同的中心,所以我在中心和医生之间有一个 ManyToMany 关系。
[User] (23)
^
|
[Employer] ____________________________ [Center]
^----| employers_has_centers |----^
|----------------------------|
|id | employer | center_id |
|----------------------------|
| 1 | 23(user_id)| 2 |
|____________________________|
Employer.php
public function healthCenters()
{
return $this->belongsToMany(HealthCenter::class);
}
现在我的问题是,当我尝试获取一个雇主并使用它抱怨的响应加载中心时
Unknown column 'employer_health_center.employer_id'
我从不在任何专栏中使用我的 employer_id
,我在进行 CRUD 操作时总是参考 user_id
。
当我尝试为中心创建雇主 refer/attach 时,出现了这个问题:
Column not found: 1054 Unknown column 'employer_id'
所以我假设默认情况下 Laravel 尝试从我的 Employer 模型的列中获取 id,有没有办法改变它应该搜索 user_id
列而不是 id?
Unknown column 'employer_health_center.employer_id'
这是因为默认情况下,laravel 尝试遵循从 table employers
中选取主键的约定。所以 laravel 会寻找一个 id employer_id
。因为在您的 table 中它是 employer
,您可以在关系中指定它。
public function healthCenters()
{
return $this->belongsToMany(HealthCenter::class, 'employer');
}
因此,如果这只是您编码的初始阶段,我强烈建议您遵循约定优于配置。