poluektov-software/laravel-relation-restore

用于删除和恢复相关模型的包

1.0.0 2019-11-20 11:58 UTC

This package is auto-updated.

Last update: 2024-09-20 23:23:53 UTC


README

俄语文档

描述

Laravel Relation Restore - 用于删除和恢复相关模型的Laravel包。该包使用软删除方法。当需要删除和恢复具有复杂相关模型链的模型时,该包可能非常有用。

安装

将以下内容添加到composer.json文件中的require部分

"poluektov-software/laravel-relation-restore": "*"
$ php composer update

$ php composer require poluektov-software/laravel-relation-restore

用法

在数据库中,您必须为每个模型创建一个额外的字段。例如,在迁移中,您可以添加以下行

//...
$table->integer( 'remove_code' )->nullable();
//...

您需要在模型中使用Relationship Restore特性

//...
use Poluektov\RelationRestore\RelationRestore;

/**
 * Class Model
 *
 * @package App\Models
 */
class Model
{
    use RelationRestore;
//...

每个模型必须有一个唯一的代码

//...
    protected $autoRemoveCode = 100;
//...

您必须通过方法autoRemoveautoRestore分别删除和恢复相关模型

    /**
     * Model events handlers.
     *
     */
    public static function boot()
    {
        parent::boot();
    
        static::deleting( function ( Model $model ) {
            $model->relatedModels->each( function ( $relatedModel ) {
                $relatedModel->autoRemove( $model->getAutoRemove() );
            } );
        } );
        
        static::restoring( function ( Model $model ) {
            $model->relatedModels()->onlyAutoRemoved( $model->getAutoRemove() )->each( function ( $relatedModel ) {
                $relatedModel->autoRestore();
            } );
        } );
    }

许可证

本软件包是开源软件,根据MIT许可证授权。