Gedmo SoftdeleatableListener:找不到字段'deletedAt'的映射

时间:2015-05-07 16:26:00

标签: symfony doctrine phpunit listener soft-delete

我想在Symfony2中为我的一些phpunit测试禁用Gedmo \ SoftDeleatable行为。

我写了这些行来删除SoftDeleatableListener:

foreach ($em->getEventManager()->getListeners() as $eventName => $listeners) {
    foreach ($listeners as $listener) {
        if ($listener instanceof \Gedmo\SoftDeleteable\SoftDeleteableListener) {
            $em->getEventManager()->removeEventListener($eventName, $listener);
        }
    }
}

但是没有一个侦听器被识别为SoftDeleteableListener的实例。

所以我在app / config.yml中添加了这些行:

doctrine:
    ..
    orm:
        ..
        filters:
            softdeleteable:
                class: Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter
                enabled: false

以及Acme / MyBundle / Resources / config / services.yml中的这些行:

services:
    ..
    gedmo.listener.softdeleteable:
        class: Gedmo\SoftDeleteable\SoftDeleteableListener
        tags:
            - { name: doctrine.event_subscriber, connection: default }
        calls:
            - [ setAnnotationReader, [ @annotation_reader ] ]

但是当我运行php app / console doctrine:schema:update --dump-sql时, 我收到以下错误消息:

  

在“Acme \ MyBundle \ Entity \ Account”类上找不到字段'deletedAt'的映射。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

看起来你仍然需要将属性添加到类中。

  /**
  * @var \DateTime
  * @ORM\Column(type="datetime")
  */
  protected $deletedAt;

我使用了Trait。只有此特征未定义deletedAt。特征TimestampableEntity定义列。

use SoftDeleteable; 

我希望这会有所帮助