2016-08-24 2 views
1

У меня есть медицинское веб-приложение, построенное с помощью Laravel 5.2, где мне нужно удалить записи, связанные с пациентом, когда они удалены. Я не могу удалить их с помощью событий Eloquent.Вложенные яркие события модели не стреляют в Laravel 5.2?

Пациент имеет много встреч, которые принадлежат этому пациенту, и эта встреча имеет много EncounterSymptoms, которые принадлежат к этой встрече. Вот моя схема базы данных: EncounterSymptom should be deleted when an Encounter is deleted.

В настоящее время мой метод, чтобы удалить все пациент «встречает» удаляет их, когда пациент удаляется удаляют связанные встречи, слушая, когда красноречивые модели пожар:

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

В моей Encounter модели, у меня есть это:

//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, а затем удалил его, который сделал удалить связанные с Encounte rSymptom, но когда я вызываю удаление на пациента, все связанные с ним контакты успешно удаляются, но EncounterSymptoms - нет. Что я делаю не так?

+0

Возможно, это проблема с мягким удалением с таблицей EncounterSymptoms. – revo

ответ

1

Если вы используете миграцию, вам необходимо установить каскад onDelete.

Например, при создании таблицы: наталкивается

$table->foreign('patient_id') 
     ->references('id')->on('Patients') 
     ->onDelete('cascade'); 

Аналогично, на EncounterSymptom таблице:

$table->foreign('encounter_id') 
     ->references('id')->on('Encounters') 
     ->onDelete('cascade'); 

См Миграции ->Foreign Key Constraints раздел в документации.

Смежные вопросы