【问题标题】:How do I access one model from another which don't have direct relationship?如何从没有直接关系的另一个模型访问一个模型?
【发布时间】:2017-09-28 22:35:06
【问题描述】:

我有一个用户模型。每个用户都有一定的成绩,每个年级都有一定的学生。

User 和 Grade 模型具有一对多的关系。年级和学生模型也有一对多的关系。但是,User 和 Student 模型没有任何关系。

一旦用户登录,他应该能够搜索属于该用户的所有学生。

我必须在这两个模型之间建立关系吗?

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    如果我正确理解了这个问题,一个用户有多个学生,所以我要做的是在他们之间创建一个one-to-many 关系,如下所示:

    //用户.php

    public function students() 
    {
      return $this->hasMany(Student::class);  
    }
    

    //学生.php

    public function user() 
    {
      return $this->belongsToOne(User::class);  
    }
    

    这将允许您通过以下方式选择用户学生:$students = $user->students 注意:我没有在这里使用()。如果您要执行$students = $user->students(),您最终会得到一个查询构建器对象。

    【讨论】:

    • 感谢您的回复。由于每个学生都与一个班级/年级相关联,并且每个年级/班级都与一个用户相关联,因此是否有其他方法可以访问学生。这可能会让人感到困惑,但我希望你能明白。感谢你的回答,但只是想知道是否还有其他方法。
    • @Azima 您可以获取用户的所有成绩,然后获取与该成绩相关联的所有学生,因此 2 个查询和一个 foreach 循环
    猜你喜欢
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    相关资源
    最近更新 更多