php - Laravel:仅为相关模型加载嵌套关系
问题描述
我正在尝试实现一项功能,但我认为它不能通过关系获得。
一个用户可能有很多公司,而公司可能有很多用户。它们通过 company_employees 数据透视表连接。
数据透视表如下所示:
company_id, user_id, position_id
我想有一个选项来获取公司员工的相关职位。
假设有公司:
- “福公司”
- “酒吧公司”
和用户
- “约翰·多伊”
还有2个职位:
- “前端开发者”
- “后端开发者”
John Doe 是这两家公司的员工,职位不同。
company_id | user_id | position_id
1 1 1
2 1 2
我怎么能做类似的东西
$company = Company::first();
$company->employees()->with('position')->get();
仅返回与属于第一家公司的第一个用户关联的职位作为 HasOne 关系?
解决方案
Company.php
public function user() {
return $this->belongsToMany('App\User', 'company_employees ', 'company_id',
'user_id');
}
User.php
public function position() {
return $this->hasMany('App\Position');
}
$company = Company::with('user.position')->get();
推荐阅读
- python-3.x - 每次调用函数时从项目列表中生成随机选择以重复
- caching - 使用 http 请求在 Apache Ignite 中获取内存指标
- java - MongoDB连接被拒绝java spring boot
- .net - 如何在 as.net core EFCore 3 中使用复数 DbSet 属性名称搭建 DbContext?
- docker - “/var/log/maillog”的 k8s pod 日志很大,无法禁用它的机器
- firebase - Firebase Cloud Functions 在 Firestore 事务写入时抛出 promise 错误
- angular - 星云模块中的星云问题,如“nb-card”、“nb-stripper”
- c# - 如何在Newtonsoft Json中将json字符串值序列化为类
- javascript - 在下拉级别显示验证错误消息
- conda - 当我使用 conda upgrade --all 时无法运行 spyder