我想在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'的映射。
有什么想法吗?
答案 0 :(得分:1)
看起来你仍然需要将属性添加到类中。
/**
* @var \DateTime
* @ORM\Column(type="datetime")
*/
protected $deletedAt;
我使用了Trait
。只有此特征未定义deletedAt
。特征TimestampableEntity定义列。
use SoftDeleteable;
我希望这会有所帮助