laravel - 调用关系后访问目标表的列 - Laravel
问题描述
我有三个表如下
基表
users
id - integer
name - string
目标表
roles
id - integer
name - string
数据透视表
role_user
user_id - integer
role_id - integer
users
和roles
表之间存在多对多关系
如果我想要所有角色 ID 为“1”的用户,那么我可以简单地这样做
$result = User::whereHas('roles', function ($q){
$q->where('roles.id', 1);
});
但我也希望角色名称对应于 table 的name
列role_id '1' roles
。
有什么办法可以将角色名称附加到$result
集合中。
解决方案
您可以Eagerload关系以获取所需的列:
User::whereHas('roles', function ($q){
$q->where('roles.id', 1);
})->with(['roles' => function ($q){
$q->select('name')->where('roles.id', 1);
}])->get();
推荐阅读
- angular - 如何从一组数据接口设计模型
- html - 带有 Html.TextAreaFor() 的 TinyMCE 输出到引号中
- ffmpeg - FFMPEG - 覆盖 4 个视频不工作,2 个视频工作完美
- java - 可比接口实现
- c++ - 编写一个程序来演示重载复制构造函数的技术?
- python - 带有 add_swig_library 的未定义符号
- angular - 消息:“SQLSTATE [HY000] [2002] php_network_getaddresses:getaddrinfo 失败:名称解析暂时失败(SQL:从 `users` 中选择 *...)”
- botframework - 使用消息传递端点注册 OAuth2 机器人
- linux - 为什么我必须使用 ld 来链接我的二进制文件
- c# - 加入两个对象列表,从第二个列表中获取第一个匹配对象