StofDoctrineExtensionsBundle softdelete - 我该如何使用它?

Maj*_*ons 8 php symfony stofdoctrineextensions

我的老板为softdelete过滤器安装了这个软件包,但文档超出了稀疏范围.如何在删除查询中使用它?

Tho*_*s K 41

在您的配置中启用它:

stof_doctrine_extensions:
    orm:
        default:
            ...
            softdeleteable: true

doctrine:
    ...
    orm:
        filters:
            softdeleteable:
                class: Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter
                enabled: true
Run Code Online (Sandbox Code Playgroud)

然后在你的实体中:

<?php

namespace Foo\BarBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;

/**
 * ...
 * @Gedmo\SoftDeleteable(fieldName="deletedAt")
 * @ORM\Entity
 */
class Foo
{
    /**
     * @var \DateTime $deletedAt
     *
     * @ORM\Column(name="deleted_at", type="datetime", nullable=true)
     */
    private $deletedAt;
Run Code Online (Sandbox Code Playgroud)

然后就像你通常那样删除实体(扩展程序负责其余部分):

    $em = $this->getDoctrine()->getManager();
    $em->remove($entity);
    $em->flush();
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢你.他们没有把这些说明放在文档中! (4认同)
  • 我有一个相关的问题:“删除”实体后,它会获得“ deletedAt”时间戳,并且不会显示在普通的“ find”查询中,这很好。但是,如果我想访问已删除的时间戳以用于其他用途怎么办?手动禁用过滤器,获取数据并重新启用它是唯一的选择吗?似乎有点脏,可能不安全。 (2认同)