Laravel Eloquent для отношения hasMany не может найти записи

Не могу найти почему не работает.

В моей модели курса я определил отношение:

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);
    }

}

Когда я пытаюсь получить доступ к CourseDates из Course, я всегда получаю null, но когда я получаю доступ к Course из CourseDate, он работает, и я вижу все данные:

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

И что странно, когда пробую с другим курсом (типа ID 2) то работает. Данные абсолютно одинаковые в базе. Любые идеи?


person Michal Palus    schedule 29.11.2018    source источник
comment
Проверьте имя класса в модели CourseDate. Пожалуйста, добавьте информацию о вашей базе данных.   -  person iamab.in    schedule 29.11.2018
comment
У вас опечатка в var_dump. Вы пытаетесь получить доступ к courseDate, но метод связи называется courseDates.   -  person Remul    schedule 29.11.2018


Ответы (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');
   }
}

И ваш метод отношений для модели CoursecourseDates, поэтому вы должны использовать его, как показано ниже.

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

Документация: https://laravel.com/docs/5.7/eloquent-relationships

person Leena Patel    schedule 29.11.2018