gon-zoo82 / soft-deleteable-extension-bundle
关于此包的最新版本(1.4.1)没有可用的许可证信息。
为gedmo的软删除监听器提供额外功能
1.4.1
2019-03-15 09:07 UTC
Requires
- php: >=5.3.3 || >=7.1.3
- symfony/framework-bundle: ~2.0 || ~3.0 || ~4.0
Requires (Dev)
- symfony/console: ~2.0 || ~3.0 || ~4.0
README
扩展自2012年以来一直存在此问题的Gedmo的软删除监听器: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(), );