获取@Gedmo \ Timestampable永远不会导入的错误,即使它是

时间:2012-06-28 12:50:13

标签: symfony doctrine-orm

我有两个实体:一个名为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时,我收到了这个错误:

  

[学说\共同\注解\ AnnotationException]
  [语义错误]属性中的注释“@Gedmo \ Timestampable”   从未导入VNN \ PressboxBundle \ Entity \ User :: $ created。你是否   也许忘记为这个注释添加一个“use”语句?

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

2 个答案:

答案 0 :(得分:1)

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

如何在app / config / config.yml中加载doctrine.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' ] ]

答案 1 :(得分: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;