assettv/laravel-cascaded-soft-deletes
最新稳定版本:1.0.1
Composer 安装命令:
composer require assettv/laravel-cascaded-soft-deletes
包简介
Cascade soft delete for chosen relations
README 文档
README
Features
-
Cascade Soft Delete for Relations
Soft delete related records automatically when a parent is soft deleted. -
Cascade Restore for Relations
Automatically restore related models if theirdeleted_atis later than or equal to the parent's restore date. -
Custom Query Support
Use a custom query to control cascade actions. -
Configurable Queue Behavior
All cascade actions are queued by default. This behavior can be customized by publishing and editing the package's config file.
Note:
This package is based on Laravel Cascaded Soft Deletes (original, no longer maintained).
Installation
You can install the package via composer:
composer require assettv/laravel-cascaded-soft-deletes
You can publish the config file with:
php artisan vendor:publish --tag="laravel-cascaded-soft-deletes-config"
Usage
To set up CascadedSoftDeletes, you need to use the trait on the parent model and define $cascadedSoftDeletes property or getCascadedSoftDeletes() method.
Simple example with $cascadedSoftDeletes property
<?php use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; use AssetTV\LaravelCascadedSoftDeletes\Traits\CascadedSoftDeletes; class Page extends Model { use SoftDeletes; use CascadedSoftDeletes; protected $cascadedSoftDeletes = [ 'blocks' ]; public function blocks() { return $this->hasMany(Block::class); } }
<?php use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; class Block extends Model { use SoftDeletes; public function page() { return $this->belongsTo(Page::class); } }
Advanced example with getCascadedSoftDeletes and custom queries
You can also define a custom query to cascade soft deletes and restores through.
The following example describes a scenario where Folder is a model that uses NodeTrait from laravel-nestedset class and each folder has many albums. getCascadedSoftDeletes() in the example will cascade soft deletes and restores to albums related to the folder and all its descendants.
<?php use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; use AssetTV\LaravelCascadedSoftDeletes\Traits\CascadedSoftDeletes; class Folder extends Model { use SoftDeletes; use NodeTrait; use CascadedSoftDeletes; public function albums() { return $this->hasMany(Album::class); } protected function getCascadedSoftDeletes() { return [ 'albums' => function() { return Album::whereHas('folder', function($q) { $q->withTrashed() ->where('_lft', '>=', $this->getLft()) ->where('_rgt', '<=', $this->getRgt()); }); } ]; } }
Requirements for the Parent & Child model classes
- Both classes must use SoftDeletes trait.
- Parent class must use CascadedSoftDeletes trait.
- Parent class must define
$cascadedSoftDeletesor implementgetCascadedSoftDeletesmethod which must return a list of cascaded HasMany relations and/or custom queries.
Testing
composer test
统计信息
- 总下载量: 910
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-06-04