Laravel-为什么是模型';什么关系没有被加载?

Laravel-为什么是模型';什么关系没有被加载?,laravel,Laravel,我有一个Laravel5.3网站,我想可能我有一些奇怪的事情发生,因为一些动作发生在API控制器中,一些发生在常规控制器中 或者可能是一个问题,有时我在处理一个模型,有时是一个雄辩的收集 问题是,我试图检索模型上的关系,但结果是空的 例如,我有一个与周模型相关的课程模型 在课程模式中,我得到周项目 public function weeks() { return $this->hasMany(Week::class, 'course_id'); }

我有一个Laravel5.3网站,我想可能我有一些奇怪的事情发生,因为一些动作发生在API控制器中,一些发生在常规控制器中

或者可能是一个问题,有时我在处理一个模型,有时是一个雄辩的收集

问题是,我试图检索模型上的关系,但结果是空的

例如,我有一个与
模型相关的
课程
模型

课程
模式中,我得到
项目

  public function weeks()
    {

        return $this->hasMany(Week::class, 'course_id');

    }
在后端,这些关系通过以下方式发送:

$course->load('weeks')
一切都很好

但是当
课程
项目被删除时,我会在
控制器中尝试采取行动

        static::deleting(function($course) { 
            $course->weeks->delete();
        });
$course->weeks为空。当时,我在数据库中看到,一切都很好,这个
课程
项目确实有一个
项目相关,但是
$course
显示了0个关系

因此,
$course->webinars
没有抓住
相关项目的地方发生了一些奇怪的事情

有没有什么我根本上做错了?可能是因为在模型中我有这样的陈述:

protected $table = 'Week';
这些是不是在阻止关系被拉扯?我一直认为我在一个模型中有一个函数,它返回的关系在我使用语法
$course->weeks
时总是可用的

想法


再次感谢,

如果您删除了一门课程,只要您有外键关系,就可以简单地将迁移设置为自动从周中删除

如果weeks表中有一列course_id,则将其添加到迁移中

$table->foreign('course_id')
      ->references('id')->on('courses')
      ->onDelete('cascade')


我想你可以用观察员。在AppServiceProvider中,首先注册观察者

public function boot()
{
     Course::observe(CourseObserver::class);
}

Now, add an Observer class.

class CourseObserver
{
    public function deleting(Course $course)
    {
         $course->weeks()->delete();
    }
} 


是的,这就是事情的设置方式,但这使得我很难在通过级联删除的项目上触发删除事件。