【问题标题】:Laravel relationships: How do I retrieve all courses to which a collection of assessment tests belong?Laravel 关系:如何检索评估测试集合所属的所有课程?
【发布时间】:2021-09-11 14:56:02
【问题描述】:

我既不是 PHP 也不是 Laravel 的专业人士,我想我走投无路了。在我的评估应用程序中,我有课程、课程和评估测试。评估测试与课程具有多对一的关系。课程与课程也有多对一的关系。 现在问题来了,如何检索assessment_tests 集合所属的所有课程? 如 sn-ps 提供的代码所示,我试图通过手动循环遍历集合并将课程保存到数组来解决这个问题,但我遇到了一些奇怪的错误。

试图获取非对象的属性“课程”

这是我有问题的功能

public function index()
    {
        $attempts=AssessmentAttempt::all();
        $i=0;
        $courses=array();
        foreach ($attempts as $attempt) {
            // dd($attempt->lesson->course); 
            $courses[$i++]=$attempt->lesson->course;
        }
        dd(array_unique($courses));
        return view('achievements.index', ['attempts'=>$attempts, 'courses'=>$courses]);
    }

AssessmentAttempt 模型

public function lesson()
    {
        return $this->belongsTo(Lesson::class);
    }

课程模型

public function course()
   {
       return $this->belongsTo(Course::class);
   }

public function assessmentAttempts()
    {
       return $this->hasMany(AssessmentAttempt::class);
    }

【问题讨论】:

    标签: php laravel relationship


    【解决方案1】:

    在 assesment_modal 中定义与 course 的关系,并将 course id 列作为 assesment_model 表中的 foreign_key

    return $this->hasMany(Course::class, 'foreign_key');

    在课程模型中也设计关系

    return $this->belongsTo(Assesment_Model::class);

    【讨论】:

    • 谢谢,但我试图避免这种情况。评估与课程相关,而课程又与课程相关。我在跳跃还有另一种方式
    猜你喜欢
    • 2018-01-01
    • 1970-01-01
    • 2019-11-14
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多