evence/soft-deleteable-extension-bundle

此包的最新版本(3.2.3)没有可用的许可证信息。

修复以与 Symfony 5.0+ 兼容。从 E-vence/SoftDeleteableListenerExtensionBundle 调整。

3.2.3 2024-09-12 07:28 UTC

This package is auto-updated.

Last update: 2024-09-18 05:55:27 UTC


README

扩展 Gedmo 的 softDeleteable 监听器,自 2012 年以来报告了此问题: doctrine-extensions/DoctrineExtensions#505.

为 doctrine 实体的关联提供 onSoftDelete 功能。此功能的行为类似于 SQL onDelete 函数(当所有者侧被删除时)。它将防止 Doctrine 错误,当引用被软删除时。

级联删除实体

当其父记录被软删除时(软)删除实体

 @Evence\onSoftDelete(type="CASCADE")

将引用设置为 null(而不是删除实体)

 @Evence\onSoftDelete(type="SET NULL")

用标记为后继者的某些属性替换引用(必须与同一实体类相同)

 @Evence\onSoftDelete(type="SUCCESSOR")

实体示例

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Evence\Bundle\SoftDeleteableExtensionBundle\Mapping\Annotation as Evence;

/*
 * @ORM\Entity(repositoryClass="AppBundle\Entity\AdvertisementRepository")
 * @Gedmo\SoftDeleteable(fieldName="deletedAt")
 */
class Advertisement
{

    ...

    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Shop")
     * @ORM\JoinColumn(name="shop_id", referencedColumnName="id")
     * @Evence\onSoftDelete(type="CASCADE")
     */
    private $shop;

    ...
}

安装

使用 composer 安装

composer require evence/soft-deleteable-extension-bundle

将包添加到 app/AppKernel.php

# app/AppKernel.php

$bundles = array(
    ...
    new Evence\Bundle\SoftDeleteableExtensionBundle\EvenceSoftDeleteableExtensionBundle(),
);