首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >学校、学生和课程模型之间的依赖关系

学校、学生和课程模型之间的依赖关系
EN

Stack Overflow用户
提问于 2018-01-25 00:46:22
回答 1查看 56关注 0票数 2

我有一个学校模型,其中有许多学生模型谁参加了多个课程模型,我也有一个控制器为每个。

我需要能够访问学校类型(大、小等),无论我是在学生、课程还是学校控制器中。

在一个严格的OOP世界里,这种方法是正确的吗?

代码语言:javascript
复制
// School model
class School
{
    ...

    public getSchoolType()
    {
        return $this->schoolType;
    {

}

// Student model
class Student
{
    ...

    public school()
    {
        return $this->school;
    {

}

// Lesson model
class Lesson
{
    ...

    public student()
    {
        return $this->student;
    {

}

// Student controller 
class StudentController
{
    public function show(Student $student)
    {
        $schoolType = $student->school->schoolType;
        return view('students', array($schoolType));
    }
}

// Lesson controller 
class LessonController
{
    public function show(Lesson $lesson)
    {
        $schoolType = $lesson->student->school->schoolType;
        return view('lessons', array($schoolType));
    }
}

如果课程以多对多的方式与学生相关,如果没有学生参加该课程,我如何在课程控制器中获取schoolType?

我的观点是,我应该通过像$lesson->school->schoolType这样的学生模型来获取schoolType,还是应该更像$lesson->student->school->schoolType,这样课程就不会直接与学生相关?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-25 00:52:26

使用eloquent relationship hasManybelongsTo

在你的学校模型中-

代码语言:javascript
复制
public function students()
{
    return $this->hasMany(Student::class);
}

在您的学生模型中-

代码语言:javascript
复制
public function lessons()
{
    return $this->hasMany(Lesson::class);
}
public function school()
{
    return $this->belongsTo(School::class);
}

在你的课程模型中-

代码语言:javascript
复制
public function student()
{
    return $this->belongsTo(Student::class);
}
public function school()
{
    return $this->belongsTo(School::class);
}

现在,您可以轻松地访问schoolType,因为您可以使用此relationship遍历模型到模型。例如,在您的Lesson Controller中-

代码语言:javascript
复制
$lession = Lession::find($lession_id);
$schoolType = $lession->student->school->schoolType;

如果你想直接从课程中访问schoolType -

代码语言:javascript
复制
$lession = Lession::find($lession_id);
$schoolType = $lession->school->schoolType;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48427620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档