Symfony軟刪除

在應用中有的時候不免要進行一些刪除記錄操做,可是這個時候若是有外鍵關聯,而且不想把關聯數據刪除掉就很麻煩。php

解決方法是能夠採用symfony自帶的軟刪除功能html

官方文檔在:https://symfony.com/doc/master/bundles/StofDoctrineExtensionsBundle/index.html#activate-the-extensions-you-wantapp

步驟以下:composer

1:經過composer要安裝stof這個bundleide

   "require": {
        "stof/doctrine-extensions-bundle": "dev-master",
         ...

 2:在app kernel中註冊這個bundleui

    public function registerBundles()
    {
        $bundles = array(
            new Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle(),
     }

 3:在config文件中增長配置this

  在doctrine的orm下增長filters部分  
orm: auto_generate_proxy_classes: "%kernel.debug%" naming_strategy: doctrine.orm.naming_strategy.underscore auto_mapping: true filters: soft-deleteable: class: Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter # Required enabled: true

 

    stof_doctrine_extensions:
default_locale: en_US orm:
default: tree: true
timestampable: true # not needed: listeners are not enabled by default softdeleteable: true

4:修改須要軟刪除的entityspa

增長引用
use Gedmo\Mapping\Annotation as Gedmo;

增長標記字段
 /**
  * Video
  *
  * @ORM\Table(name="videos")
  * @ORM\Entity(repositoryClass="Tron\WebBundle\Repository\VideoRepository")
  * @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=false)//添加此行
  */
添加字段deleteat
    /**
     * @ORM\Column(type="datetime", nullable=true)
     */
    private $deletedAt;

    /**
     * Get isDelete
     *
     * @return boolean
     */
    public function getIsDelete()
    {
        return $this->isDelete;
    }

    public function getDeletedAt()
    {
        return $this->deletedAt;
    }
相關文章
相關標籤/搜索