【问题标题】:How do i access data using two BelongsTo?如何使用两个 BelongsTo 访问数据?
【发布时间】:2017-02-09 13:20:04
【问题描述】:

我有三个表 - “课程”、“课程”和“任务”。每节课属于一门课程,每一项任务属于一节课。我想输出一个任务,显示任务名称、课程名称和课程名称。如何访问课程表数据?为了获取链接到课程的课程信息,我在我的任务模型中使用了以下内容:

$lessonName = $this->lessons->lesson_name;

为了获得与该课程相关联的课程名称,我尝试了以下但没有成功,但我真的在这里猜测:

$courseName = $this->lessons->courses->course_name;

我的模特关系如下:

课程.php

    public function lessons()
{
    return $this->hasMany('App\Lesson');
}

课程.php

    public function tasks()
{
    return $this->belongsTo('App\Task', 'task_id', 'id');
}

任务.php

    public function lessons()
{
    return $this->belongsTo('App\Lesson', 'lesson_id', 'id');
}

我哪里出错了?谢谢

【问题讨论】:

    标签: laravel laravel-5


    【解决方案1】:

    还有另一种方法可以使用访问器来做到这一点。

    在您的任务模型上执行以下操作:

    public function getLessonAttribute(){
        return Lesson::where('id', $this->attributes[*foreign_key_field*])->first();
    }
    

    在这里,您会收到有关任务所属课程的所有数据,并可将它们用作模型的任何其他属性(字段)。

    在您的课程模型上获取它所属的课程。

    public function getCourseAttribute(){
        return Course::where('id', $this->attributes[*course_foreign_key_field*])->first();
    }
    

    然后假设 $task 是您的收藏,您可以在刀片中访问课程和课程,如下所示:

    $task->lesson->lesson_name$task->lesson->course->course_name

    【讨论】:

      【解决方案2】:

      在你的lesson.php model 中不存在关系courses 所以有你的问题。使用答案告诉你@jeroenF

      【讨论】:

        【解决方案3】:

        所以你想要 hasManyThrough 的倒数?

        Laravel 的 hasManyThrough 功能(请参阅他们的网站)有助于将您的课程直接连接到任务,而无需在单独的关系中使用中间连接。

        你在寻找逆吗?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-02-14
          • 2014-08-24
          • 1970-01-01
          • 1970-01-01
          • 2016-04-02
          • 2010-09-07
          • 2019-04-13
          • 1970-01-01
          相关资源
          最近更新 更多