2

我有两个实体:一个,称为Event,它是可时间戳的(通过 Gedmo)并且已经存在了几个月,另一个还不是时间戳,称为User,但我正在尝试使其具有时间戳。

在我的User实体的顶部,我有以下use声明:

use Gedmo\Mapping\Annotation as Gedmo;

然后我有这个:

/** 
 * @var datetime $created
 *
 * @Gedmo\Timestampable(on="create")
 * @ORM\Column(type="datetime")
 */
private $created;

/** 
 * @var datetime $updated
 *
 * @ORM\Column(type="datetime")
 * @Gedmo\Timestampable(on="update")
 */
private $updated;

这与我为Event. 但是,奇怪的是,当我尝试这样做时./app/console doc:mig:diff,我收到了这个错误:

[Doctrine\Common\Annotations\AnnotationException]
[语义错误] 从未导入属性 VNN\PressboxBundle\Entity\User::$created 中的注释“@Gedmo\Timestampable”。您是否可能忘记为此注释添加“使用”语句?

不,我没有忘记添加use声明。我觉得奇怪的是,Event前一段时间工作得很好,但现在User不工作了。为什么我会收到此错误?

4

2 回答 2

1

我遇到了这种奇怪的行为,我不记得究竟是什么原因造成的。

你如何在 app/config/config.yml 中加载学说.extensions 配置?

这是我运行良好的配置:

app/config/config.yml

imports:
    - { resource: parameters.ini }
    - { resource: security.yml }
    - { resource: doctrine-extensions.yml }

app/config/doctrine-extensions.yml

services:
    gedmo.listener.timestampable:
        class: Gedmo\Timestampable\TimestampableListener
        tags:
            # I have 2 DBAL connections using Timestampable
            - { name: doctrine.event_subscriber, connection: tm_vg }
            - { name: doctrine.event_subscriber, connection: tm_common }
        calls:
            - [ setAnnotationReader, [ '@annotation_reader' ] ]
于 2012-06-28T13:04:07.980 回答
1

我有同样的问题要解决我更换

@Gedmo\Slug(fields={"projectName"})

经过

@Gedmo\Mapping\Annotation\Slug(fields={"projectName"})

/** 
 * @Gedmo\Mapping\Annotation\Slug(fields={"projectName"})
 * @ORM\Column(name="slug", type="string", length=255, nullable=true, unique=true)
 */
private $slug;
于 2014-08-25T09:18:54.927 回答