laravel - 使用具有不同模型的数据透视表
问题描述
我有以下型号:
- 用户
- 用户组
- 物品
现在每个用户都与枢轴有belongsToMany
关系:Item
public function items()
{
return $this->belongsToMany(Item::class)
->withPivot('value');
}
这是 的结构item
:
Item
- 标题
- 枢:
- 价值
- 枢:
例子
User
- 姓名:蒂姆
- 项目:
- 作品名称:汽车
- 值(枢轴):2
现在它变得很棘手:我也想User
在模型中使用UserGroup
- 每个都User
应该有很多Item
s 和一个新的数据透视表,这与数据透视表不同Item
,当它是User
.
例子
UserGroup
- 名称:党组
- 用户:
- 姓名:蒂姆
- 项目:
- 作品名称:汽车
- 值(枢轴):3
我的方法
所以我认为,唯一可能的解决方案是创建一个类似于 (extended from ) 的新模型,它与( UserGroupUser
extended from User
) 有关系。UserGroupUserItems
Item
但也许有更聪明的方法来做到这一点?
解决方案
您可以像这样在 User 组上创建 users() 方法:
class UserGroup extends Model
{
public function users()
{
return $this->hasMany(User::class);
}
}
// Then to retrieve your data:
$groups = UserGroup::with('users.items')->get();
dd($groups);
推荐阅读
- python - TensorFlowProbability 中的范围界定
- django - 与 django-filter 斗争:NoReverseMatch 多个字段
- linux - 在 SELinux 中添加访问受限的用户或降级现有用户
- javascript - React Native 构建 .ipa 文件
- r - 使用“移动”包计算突发利用率分布的体积面积
- android - 我有一个芯片组。如果没有选择任何芯片,则会显示一个列表,我希望在未选中芯片时显示相同的芯片
- node.js - 无法安装松露快递盒?
- sql-server - 在 SQL Server 中创建输出多个文件而不是追加到一个文件的作业
- python - 阅读台词并制作字典
- flutter - 未处理的异常:MissingPluginException(在通道 com.roughike/flutter_facebook_login 上找不到方法登录的实现)