5

我已经在我的实体上进行了日志记录,这样当我使用@Gedmo\Versioned注释对产品字段进行更改时,就会创建一个新版本。然而,唯一的问题是该username领域仍然存在NULL。在 Sonata Admin 后端执行更新时,有一个经过身份验证的用户。

<?php

namespace MyApp\CmsBundle\Entity\Log;

use Doctrine\ORM\Mapping as ORM;
use Gedmo\Loggable\Entity\MappedSuperclass\AbstractLogEntry;
use Gedmo\Loggable\Entity\Repository\LogEntryRepository;

/**
 * @ORM\Entity(repositoryClass="Gedmo\Loggable\Entity\Repository\LogEntryRepository", readOnly=true)
 * @ORM\Table(
 *      name="log_product",
 *      indexes={
 *          @ORM\Index(name="log_class_lookup_idx", columns={"object_class"}),
 *          @ORM\Index(name="log_date_lookup_idx", columns={"logged_at"}),
 *          @ORM\Index(name="log_user_lookup_idx", columns={"username"}),
 *      }
 * )
 */
class ProductLog extends AbstractLogEntry
{

}

所以看起来它log_user_lookup_idx不能正常工作,我需要一些特殊的配置吗?

4

1 回答 1

6

看来我缺少一些配置,将以下内容添加到主app/config/config.yml文件中就可以了。

stof_doctrine_extensions:
    default_locale: en
    orm:
        default:
            loggable: true

我最初确实在我的捆绑包services.yml配置中有这个:

gedmo.listener.loggable:
    class: Gedmo\Loggable\LoggableListener
    tags:
        - { name: doctrine.event_subscriber, connection: default }
    calls:
        - [ setAnnotationReader, [ "@annotation_reader" ] ]

这设法跟踪正在修改的实体而不是用户,我已经删除了这个配置,并且日志记录仍然只使用stof_doctrine_extensions配置设置。

如果您的代码库中同时包含两者,那么我发现的所有内容都将被记录两次。

于 2015-09-17T14:30:02.890 回答