Laravel-嵌套的多对多关系

时间:2018-11-19 09:32:53

标签: laravel eloquent

我正在尝试理解“具有很多关系”的概念。

这是我目前的恋情,

  • 该学生可以加入多个俱乐部。
  • 俱乐部由许多学生组成。
  • 俱乐部有不同的职位,可以分配给学生(即主席,董事长等)

这是我的数据库的样子,

  • 学生
  • 俱乐部
  • club_student(数据透视表)
  • 位置
  • club_position(数据透视表)

从Laravel文档中,我对嵌套关系的理解是做到这一点, $students = Student::with('clubs.positions')->get();

我的问题是 如何检索所有可用信息? (学生姓名,学生俱乐部,学生位置和相应俱乐部中的位置点)。

我需要foreach循环所有内容吗?

    foreach ($students as $student) {
        echo $student->name . " -> ";

        foreach ($student->clubs as $club) {
            echo $club->name . " -> ";

            foreach ($club->positions as $position) {
                echo $position->points . "<br>";
            }
        }
    }

如果我只想获取学生的俱乐部位置怎么办?

是否可以直接检索$student->club->position

1 个答案:

答案 0 :(得分:1)

在模型中设置关系时,可以检索任何相关信息 因此,如果您想获得学生俱乐部职位,就可以

$ student-> club()-> first()-> positions()-> get();

//您可以获得第一个对象

$ student-> club-> positions()-> get();

或者如果您想获得俱乐部学生

$ club-> students()-> get();

以此类推...