laravel eloquent hasOneThrough外键
laravel eloquent hasOneThrough foreign keys
我有以下结构:
**users**
id, company_id
**companies**
id, country_id
**countries**
id, name
现在我想像这样获取公司和国家/地区的用户:
User::with('country')->get();
所以我已经将关系添加到我的用户模型中:
public function country() {
return $this->hasOneThrough(Country::class, Company::class);
}
但是,Eloquent 正在查找公司列中的 user_id 列,而不是用户 table:
中的 company_id 列
select `countries`.*, `companies`.`user_id` as `laravel_through_key`
from `countries`
inner join `companies` on `companies`.`id` = `countries`.`company_id`
如文档中的详细信息所述
return $this->hasOneThrough(
Country::class,
Company::class,
'id', // Foreign key on the Companies table...
'id', // Foreign key on the Country table...
'company_id', // Local key on the users table...
'country_id' // Local key on the Companies table...
);
一个更简单的解决方案是使用现有关系 belongsTo
User::with('company.country')->get();
我有以下结构:
**users**
id, company_id
**companies**
id, country_id
**countries**
id, name
现在我想像这样获取公司和国家/地区的用户:
User::with('country')->get();
所以我已经将关系添加到我的用户模型中:
public function country() {
return $this->hasOneThrough(Country::class, Company::class);
}
但是,Eloquent 正在查找公司列中的 user_id 列,而不是用户 table:
中的 company_id 列select `countries`.*, `companies`.`user_id` as `laravel_through_key`
from `countries`
inner join `companies` on `companies`.`id` = `countries`.`company_id`
如文档中的详细信息所述
return $this->hasOneThrough(
Country::class,
Company::class,
'id', // Foreign key on the Companies table...
'id', // Foreign key on the Country table...
'company_id', // Local key on the users table...
'country_id' // Local key on the Companies table...
);
一个更简单的解决方案是使用现有关系 belongsTo
User::with('company.country')->get();