我已经在我的实体上进行了日志记录工作,以便当我使用@GedmoVersioned
注释更改产品字段时创建新版本。然而,唯一的问题是username
场仍然是NULL
。当更新在Sonata Admin后端执行时,有一个经过身份验证的用户。
<?php
namespace MyAppCmsBundleEntityLog;
use DoctrineORMMapping as ORM;
use GedmoLoggableEntityMappedSuperclassAbstractLogEntry;
use GedmoLoggableEntityRepositoryLogEntryRepository;
/**
* @ORMEntity(repositoryClass="GedmoLoggableEntityRepositoryLogEntryRepository", readOnly=true)
* @ORMTable(
* name="log_product",
* indexes={
* @ORMIndex(name="log_class_lookup_idx", columns={"object_class"}),
* @ORMIndex(name="log_date_lookup_idx", columns={"logged_at"}),
* @ORMIndex(name="log_user_lookup_idx", columns={"username"}),
* }
* )
*/
class ProductLog extends AbstractLogEntry
{
}
所以看起来log_user_lookup_idx
不能正常工作,是否有一个特定的配置我需要这个?
看来我缺少了一点配置,将以下内容添加到主app/config/config.yml
文件中就可以了。
stof_doctrine_extensions:
default_locale: en
orm:
default:
loggable: true
我最初在我的bundle的services.yml
配置中有这个:
gedmo.listener.loggable:
class: GedmoLoggableLoggableListener
tags:
- { name: doctrine.event_subscriber, connection: default }
calls:
- [ setAnnotationReader, [ "@annotation_reader" ] ]
这设法跟踪被修改的实体,但不是用户,我已经删除了这个配置,日志记录仍然与stof_doctrine_extensions
配置设置一起工作。
如果你在你的代码库中都有,那么我发现所有的东西都会被记录两次。