我有一个使用Laravel 5.2构建的医疗网络应用程序,我需要删除与患者相关的记录。我无法用Eloquent事件删除它们。
患者有许多属于该患者的遭遇,并且该遭遇具有许多属于该遭遇的遭遇症状。 这是我的数据库架构:
目前,我删除所有患者'遭遇'的方法是删除患者时删除相关的遭遇,当雄辩的模特开火时,通过监听来删除相关的遭遇:
//In App\Models\Patient\Patient.php
public function Encounters(){
return $this->hasMany('App\Models\Patient\Encounter');
}
protected static function boot() {
parent::boot();
static::deleting(function($Patient) {
$Patient->Encounters()->delete();
});
}
在我的邂逅模型中,我有这个:
//In App\Models\Patient\Encounter.php
public function EncounterSymptoms(){
return $this->hasMany('App\Models\Encounter\EncounterSymptom');
}
protected static function boot() {
parent::boot();
static::deleting(function($Encounter) {
$Encounter->EncounterSymptoms()->delete();
});
}
使用修补程序,我选择了一个Encounter实例,然后将其删除,删除了相关的EncounterSymptom记录,但当我在患者上调用删除时,所有相关的遭遇都被成功删除,但EncounterSymptoms则没有。我做错了什么?
答案 0 :(得分:1)
如果您正在使用迁移,则需要设置onDelete
级联。
例如,在创建Encounters表时:
$table->foreign('patient_id')
->references('id')->on('Patients')
->onDelete('cascade');
同样,在EncounterSymptom表上:
$table->foreign('encounter_id')
->references('id')->on('Encounters')
->onDelete('cascade');
请参阅迁移 - >文档中的Foreign Key Constraints部分。