laravel 雄辩 hasOneThrough 外键
Posted
技术标签:
【中文标题】laravel 雄辩 hasOneThrough 外键【英文标题】:laravel eloquent hasOneThrough foreign keys 【发布时间】:2021-10-02 09:41:59 【问题描述】:我有以下结构:
**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 列,而不是 users 表中的 company_id 列:
select `countries`.*, `companies`.`user_id` as `laravel_through_key`
from `countries`
inner join `companies` on `companies`.`id` = `countries`.`company_id`
【问题讨论】:
【参考方案1】:如文档中的详细说明所述
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();
【讨论】:
以上是关于laravel 雄辩 hasOneThrough 外键的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 eloquent hasmanythrough 或 hasonethrough 在 laravel 中加入 3 个表