diff --git a/app/Models/Bottle.php b/app/Models/Bottle.php index bcea0e4..dcefb04 100644 --- a/app/Models/Bottle.php +++ b/app/Models/Bottle.php @@ -2,6 +2,7 @@ namespace App\Models; +use Dyrynda\Database\Support\CascadeSoftDeletes; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsToMany; @@ -13,10 +14,12 @@ class Bottle extends Model implements HasMedia { - use HasFactory, HasSlug, InteractsWithMedia, SoftDeletes; + use CascadeSoftDeletes, HasFactory, HasSlug, InteractsWithMedia, SoftDeletes; protected $guarded = ['id']; + protected $cascadeDeletes = ['outlets']; + protected function casts(): array { return [ diff --git a/app/Models/Category.php b/app/Models/Category.php index e193ccd..9ecbe46 100644 --- a/app/Models/Category.php +++ b/app/Models/Category.php @@ -2,6 +2,7 @@ namespace App\Models; +use Dyrynda\Database\Support\CascadeSoftDeletes; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsToMany; @@ -11,10 +12,12 @@ class Category extends Model { - use HasFactory, HasSlug, SoftDeletes; + use CascadeSoftDeletes, HasFactory, HasSlug, SoftDeletes; protected $guarded = ['id']; + protected $cascadeDeletes = ['perfumes']; + protected function casts(): array { return [ diff --git a/app/Models/Outlet.php b/app/Models/Outlet.php index ce0f61d..3b30339 100644 --- a/app/Models/Outlet.php +++ b/app/Models/Outlet.php @@ -3,6 +3,7 @@ namespace App\Models; use App\Enums\OutletStatus; +use Dyrynda\Database\Support\CascadeSoftDeletes; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsToMany; @@ -15,10 +16,12 @@ class Outlet extends Model implements HasMedia { - use HasFactory, HasSlug, InteractsWithMedia, SoftDeletes; + use CascadeSoftDeletes, HasFactory, HasSlug, InteractsWithMedia, SoftDeletes; protected $guarded = ['id']; + protected $cascadeDeletes = ['openingHours', 'facilities', 'vouchers', 'perfumes', 'products', 'bottles', 'expenses', 'users5']; + protected function casts(): array { return [ diff --git a/app/Models/ReferralUsage.php b/app/Models/ReferralUsage.php index b442d63..23838d7 100644 --- a/app/Models/ReferralUsage.php +++ b/app/Models/ReferralUsage.php @@ -14,11 +14,11 @@ class ReferralUsage extends Model public function user(): BelongsTo { - return $this->belongsTo(User::class); + return $this->belongsTo(User::class)->withTrashed(); } public function referralCode(): BelongsTo { - return $this->belongsTo(ReferralCode::class); + return $this->belongsTo(ReferralCode::class)->withTrashed(); } } diff --git a/app/Models/Tier.php b/app/Models/Tier.php index a9fb84a..5934142 100644 --- a/app/Models/Tier.php +++ b/app/Models/Tier.php @@ -2,6 +2,7 @@ namespace App\Models; +use Dyrynda\Database\Support\CascadeSoftDeletes; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasOne; @@ -9,10 +10,12 @@ class Tier extends Model { - use HasFactory, SoftDeletes; + use CascadeSoftDeletes, HasFactory, SoftDeletes; protected $guarded = ['id']; + protected $cascadeDeletes = ['membership']; + protected function casts(): array { return [ diff --git a/app/Models/User.php b/app/Models/User.php index 9deaa50..8160070 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -5,6 +5,7 @@ // use Illuminate\Contracts\Auth\MustVerifyEmail; use App\Enums\UserStatus; +use Dyrynda\Database\Support\CascadeSoftDeletes; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Relations\BelongsToMany; @@ -16,10 +17,12 @@ class User extends Authenticatable implements MustVerifyEmail { - use HasFactory, HasRoles, Notifiable, SoftDeletes; + use CascadeSoftDeletes, HasFactory, HasRoles, Notifiable, SoftDeletes; protected $guarded = ['id']; + protected $cascadeDeletes = ['employee', 'membership', 'referralCode', 'outlets']; + protected function casts(): array { return [ diff --git a/composer.json b/composer.json index 44d319d..bfaa9dd 100644 --- a/composer.json +++ b/composer.json @@ -11,6 +11,7 @@ "require": { "php": "^8.2", "dasundev/livewire-dropzone": "^2.0", + "dyrynda/laravel-cascade-soft-deletes": "^4.5", "laravel-lang/lang": "^15.24", "laravel/framework": "^12.0", "laravel/tinker": "^2.10.1", diff --git a/composer.lock b/composer.lock index d550233..98c47bc 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "cd1a2ae591771cef0f450d67788b71e8", + "content-hash": "bc292bca89df03817c564af417271187", "packages": [ { "name": "archtechx/enums", @@ -1019,6 +1019,53 @@ ], "time": "2024-10-09T13:47:03+00:00" }, + { + "name": "dyrynda/laravel-cascade-soft-deletes", + "version": "4.5.0", + "source": { + "type": "git", + "url": "https://github.com/michaeldyrynda/laravel-cascade-soft-deletes.git", + "reference": "df5fee4003fc183c8ef46dc9055c1cada4182494" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/michaeldyrynda/laravel-cascade-soft-deletes/zipball/df5fee4003fc183c8ef46dc9055c1cada4182494", + "reference": "df5fee4003fc183c8ef46dc9055c1cada4182494", + "shasum": "" + }, + "require": { + "illuminate/database": "^11.0 || ^12.0", + "illuminate/events": "^11.0 || ^12.0", + "php": "^8.2" + }, + "require-dev": { + "pestphp/pest": "^2.34 || ^3.7", + "pestphp/pest-plugin-drift": "^2.5" + }, + "type": "utility", + "autoload": { + "psr-4": { + "Dyrynda\\Database\\Support\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dyrynda", + "email": "michael@dyrynda.com.au", + "homepage": "https://dyrynda.com.au" + } + ], + "description": "Cascading deletes for Eloquent models that implement soft deletes", + "support": { + "issues": "https://github.com/michaeldyrynda/laravel-cascade-soft-deletes/issues", + "source": "https://github.com/michaeldyrynda/laravel-cascade-soft-deletes/tree/4.5.0" + }, + "time": "2025-02-26T10:22:40+00:00" + }, { "name": "egulias/email-validator", "version": "4.0.4",