首页 > 解决方案 > 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;

在此处输入图像描述

我需要获得两个名称(可能像用户表一样更改列名)以显示在表中

感谢您的时间和答案!:)

标签: phpmysqllaravel

解决方案


在您的选择子句中为学生姓名和教师姓名定义唯一别名

->select('asignaciones.id','students.name as student_name','teachers.name as teacher_name');

现在name在返回的结果集中为教师和学生姓名返回单个别名,对象不能有 2 个具有相同名称的键,因此其中一个名称被覆盖,而 laravel 将数据库结果映射到对象或对象集合


推荐阅读