在應用中有的時候不免要進行一些刪除記錄操做,可是這個時候若是有外鍵關聯,而且不想把關聯數據刪除掉就很麻煩。php
解決方法是能夠採用symfony自帶的軟刪除功能html
步驟以下: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; }