Существует ли модульный способ выполнения каскадных мягких удалений в L4?
Моя база данных уже предназначена для этого с жестким удалением, потому что все таблицы связаны с другим. Однако я использую мягкие удаления и действительно не хочу перегружать метод delete()
в своих моделях – просто из-за ( A) количество моделей и (B) необходимо отредактировать метод delete()
во всех моделях при изменении других моделей.
Любые указатели или подсказки будут оценены.
У меня есть каскадные удаления, работающие с использованием событий модели , например, в модели продукта, которую я привязываю к удаленному событию, чтобы я мог мягко удалить все отношения:
// Laravel's equivalent to calling the constructor on a model public static function boot() { // make the parent (Eloquent) boot method run parent::boot(); // cause a soft delete of a product to cascade to children so they are also soft deleted static::deleted(function($product) { $product->images()->delete(); $product->descriptions()->delete(); foreach($product->variants as $variant) { $variant->options()->delete(); $variant->delete(); } }); }
Я знаю, что это возможно из моих моделей:
public function delete() { ChildTable::where('parent_id', $this->id)->delete(); ChildTable2::where('parent_id', $this->id)->delete(); parent::delete(); }
Но любое обновление моделей или структуры таблиц приведет к добавлению / редактированию этого файла, включая другие модели.