joggapp/laravel-cascade-soft-deletes

Laravel PHP 框架的级联软删除

v2.0.0 2024-03-13 08:42 UTC

This package is auto-updated.

Last update: 2024-09-13 09:51:37 UTC


README

实现

  1. JoggApp\LaravelCascadeSoftDeletes\Traits\CascadeSoftDeletes 特性添加到父模型中。
  2. protected $cascadeSoftDeletes 设置为一个数组,指定软删除要级联到哪些子关系。

代码示例

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use JoggApp\LaravelCascadeSoftDeletes\Traits\CascadeSoftDeletes;

class User extends Model
{
    use SoftDeletes, CascadeSoftDeletes;

    protected $cascadeSoftDeletes = [
        'posts',
    ];

    public function posts()
    {
        return $this->hasMany(Post::class);
    }
}

现在您可以删除一个 App\Models\User 记录,任何相关的 App\Models\Post 记录也将被删除。如果 App\Models\Post 记录也实现了 CascadeSoftDeletes 特性,它的子记录也将被删除,依此类推。

$user = App\Models\User::find($userId);
$user->delete(); // Soft delete the user, which will also trigger the delete() method on any posts and their children.