Laravel Eloquent for hasMany关系找不到记录

时间:2018-11-29 08:52:53

标签: laravel eloquent eloquent--relationship

我找不到为什么不起作用。

在我的课程模型中,我定义了关系:

class Course extends Model {

    public function courseDates() {
        return $this->hasMany(CourseDate::class, 'course_id');
    }

}

在我的CourseDate模型中:

class CourseDate extends Model {

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

}

当我尝试从Course访问CourseDates时,我总是会得到null,但是当我从CourseDate访问Course时,它将起作用并且我会看到所有数据:

var_dump(CourseDate::where('id', 1)->first()->course->name); => output: "Course 1"
var_dump(Course::where('id', 1)->first()->courseDate); => output: null

当我尝试另一门课程(例如ID 2)时,奇怪的是它起作用了。数据库中的数据绝对相同。有任何想法吗?

1 个答案:

答案 0 :(得分:0)

您应该添加CourseDate::class之类的类,而不是像下面这样添加

class Course extends Model {
   public function courseDates() {
       return $this->hasMany('App\CourseDate', 'course_id');
   }
}

在您的CourseDate模型中

class CourseDate extends Model {
   public function course() {
       return $this->belongsTo('App\Course');
   }
}

并且您用于Course模型的关系方法是courseDates,因此您应该像下面这样使用它

var_dump(Course::where('id', 1)->first()->courseDates);

文档:https://laravel.com/docs/5.7/eloquent-relationships