evence/soft-deleteable-extension-bundle
此包的最新版本(3.2.3)没有可用的许可证信息。
修复以与 Symfony 5.0+ 兼容。从 E-vence/SoftDeleteableListenerExtensionBundle 调整。
3.2.3
2024-09-12 07:28 UTC
Requires
- php: >=8.0
- symfony/framework-bundle: ^5.0 || ^6.0
Requires (Dev)
- symfony/console: ^5.0 || ^6.0
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(), );