Я разрабатываю веб-приложение Laravel, используя Laravel 5.2. У меня очень простой вопрос … Как мне прослушать событие forceDelete для того, чтобы вызвать отношения модели ForceDelete?
Я искал в Интернете и S.O. для немногих, но все вопросы / ответы, которые я нашел, были добавлены к методу удаления, а также в документации API, я не нашел очень много …
В моем случае у меня есть модель реестра и модель RegistryDetail
Стол реестра
|id|name|surname|....
RegistryDetail таблица
|id|id_registry|....
Я создал для этого boot
функция:
protected static function boot()
{
parent::boot();
static::deleted(function($registry) {
// Delete registry_detail
$registry->registryDetail->delete();
});
static::restored(function($registry) {
// Restore registry_detail
$registry->registrydetail()->withTrashed()->restore();
});
}
Поскольку обе модели имеют SoftDeletes
static::deleted
Функция вызывается только тогда, когда вызывается метод delete (). если я вызову метод forceDelete (), соответствующая модель не будет удалена из базы данных.
Если вам нужна дополнительная информация, дайте мне знать.
заранее спасибо
deleted
событие все еще должно срабатывать при вызове forceDelete()
, Внутри deleted()
Метод события, вы можете проверить forceDeleting
охраняемая собственность через isForceDeleting()
чтобы убедиться, что вы регулярно удаляете или удаляете.
static::deleted(function($registry) {
// Delete registry_detail
if ($registry->isForceDeleting()) {
$registry->registryDetail->forceDelete();
} else {
$registry->registryDetail->delete();
}
});
Других решений пока нет …