如何在 laravel 中加入 table

how to join table in laravel

我有 2 table 假设第一个有类似 id_teacher_a、id_teacher_b

的东西

第二个table有来自table1的详细信息(教师姓名、教师地址等)

我只想显示老师名字,请问如何加入?

我的控制器

$data['getid'] = Classroom::select(
        'classroom.id',
        'teacher.id as tchr_id',
        'teacher.name as tchr_name'
      )
      ->join('teacher', 'classroom.teacher_id', '=', 'teacher.id')
      ->first();

当我想展示 table 教室时,它会像

#classroom id   #teacher_name_a   #teacher_name_b
1                a                 b

以下应该可以正常工作:

DB::table('classrooms')
    ->join('teacher as ta', 'ta.id', '=', 'classrooms.id_teacher_a')
    ->join('teacher as tb', 'tb.id', '=', 'classrooms.id_teacher_b')
    ->select([
        'classrooms.id as classroom_id',
        'ta.name as teacher_name_a'
        'tb.name as teacher_name_b'
    ])->get();

或者,如果您的课堂模型具有以下内容:

class Teacher extends Model
{
    public function teacherA()
    {
         return $this->belongsTo(Teacher::class, 'id_teacher_a');
    }

    public function teacherB()
    {
         return $this->belongsTo(Teacher::class, 'id_teacher_b');
    }
}

那你还可以这样做:

 Classroom::query()
          ->with(['teacherA', 'teacherB'])
          ->map(function ($classroom) {
              return [
                  'classroom id' => $classroom->id,
                  'teacher_name_a' => $classroom->teacherA->name,
                  'teacher_name_b' => $classroom->teacherB->name
              ];
          });