我有两个实体:一个名为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
无效。为什么我会收到此错误?
答案 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;