【问题标题】:Laravel Eloquent for hasMany relation cannot find recordsLaravel Eloquent for hasMany 关系找不到记录
【发布时间】:2018-11-29 08:52:52
【问题描述】:

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

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

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)上尝试它时,它会起作用。数据库中的数据是完全一样的。有什么想法吗?

【问题讨论】:

  • 检查CourseDate模型中的类名。请添加您的数据库详细信息。
  • 您的var_dump 中有错字。您正在尝试访问courseDate,但关系方法称为courseDates

标签: laravel eloquent eloquent-relationship


【解决方案1】:

你不应该像 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-20
    • 2016-03-17
    • 2015-12-22
    • 1970-01-01
    • 2022-11-23
    • 2017-09-14
    • 2014-10-29
    • 2013-11-14
    相关资源
    最近更新 更多