feat: install and implement cascade soft delete to model

This commit is contained in:
Yoga Pangestu 2025-10-03 08:39:25 +07:00
parent 741143a407
commit a80a03931c
8 changed files with 71 additions and 8 deletions

View File

@ -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 [

View File

@ -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 [

View File

@ -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 [

View File

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

View File

@ -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 [

View File

@ -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 [

View File

@ -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",

49
composer.lock generated
View File

@ -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",