php - Laravel 中的查询构建器 - 用户名中的 2 个列.id 外来键
问题描述
我的项目有问题
我正在尝试使用表“Asignaciones”进行查询,该表保存学生和教师分配的记录。(老师可以评论学生的作品,只能看到分配的学生)主要问题是所有用户都在同一张桌子上,当我尝试返回一个名字时只有一个。
$asignaciones = DB::table('asignaciones')
->join('users as students','students.id',
'=','asignaciones.id_student')
->join('users as teachers','teachers.id',
'=','asignaciones.id_teacher')
->select('asignaciones.id','students.name',
'teachers.name')->get();
return $asignaciones;
我需要获得两个名称(可能像用户表一样更改列名)以显示在表中
感谢您的时间和答案!:)
解决方案
在您的选择子句中为学生姓名和教师姓名定义唯一别名
->select('asignaciones.id','students.name as student_name','teachers.name as teacher_name');
现在name
在返回的结果集中为教师和学生姓名返回单个别名,对象不能有 2 个具有相同名称的键,因此其中一个名称被覆盖,而 laravel 将数据库结果映射到对象或对象集合
推荐阅读
- python - 如何将一系列数值数据转换为特定的分类数据?
- python - 如何将默认值归入 Pandas 数据框列?
- reactjs - 在第一次渲染时从父组件访问子组件的引用
- java - 我可以简化 Hibernate 注释吗?
- bash - 如何使用 shell 脚本查找 CSV 文件中出现最多的字段?
- push-notification - 推送通知后的简单推送错误:java.lang.NoClassDefFoundError
- r - R 的 trunc 和 round 不适用于课程日期?
- android - 是否有任何解决方案可以在 View 中观察 MutubleLiveData 的状态,同时通过 ViewModel 中的方法参数对其进行更改
- android - Gradle 使用 ANDROIDX_TEST_ORCHESTRATOR 生成代码覆盖率报告
- java - 更新工作——如何通过在 android 的触摸屏上滑动手指来测试智能手机屏幕?