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