我在Doctrine 2的注释文档块中收到此错误:
Doctrine\Common\Annotations\AnnotationException: [Syntax Error] Expected PlainValue, got ')'
在寻找答案之后,我发现了这个引用Stackoverflow Question 3500125,其实质上是指在注释中的所有值周围加上引号。
使用注释块我似乎不可能。这是我抛出错误的例子。
/**
* @var tags
*
* @ManyToMany(targetEntity="namespace\to\tag")
* @JoinTable(name="content_tag",
* joinColumns={
* @JoinColumn(name="content_id", referencedColumnName="id")
* },
* inverseJoinColumns={
* @JoinColumn(name="tag_id", referencedColumnName="id")
* }
* ) // This is the line indicated by the error
*/
private $tags;
如果我按照我在堆栈溢出中找到的答案的建议来引用这些值,我的代码将是这样的:
/**
* @var tags
*
* @ManyToMany(targetEntity="namespace\to\tag")
* @JoinTable(name="content_tag",
* joinColumns="{
* @JoinColumn(name="content_id", referencedColumnName="id")
* }",
* inverseJoinColumns="{
* @JoinColumn(name="tag_id", referencedColumnName="id")
* }" // Note the extra quotation marks
* )
*/
private $tags;
这根本不对。
答案 0 :(得分:11)
对于那些来到这里但不是因为学说的人,我的错误是在@Routes
注释中使用单引号而不是双引号。
WRONG:
/**
* @Route('/home')
*/
RIGHT
/**
* @Route("/home")
*/
答案 1 :(得分:2)
这是一个愚蠢的错误,错误字符串不是很有用,因为它指向我在我的问题中显示的行作为错误所在的行。事实是这个实体正在扩展一个父对象,父对象有@Entity标签,但是孩子没有,我移动了它,一切正常。
答案 2 :(得分:0)
我只是通过对实体使用断言而发生相同类型的错误:
* @Assert\Email(
* message = "The email '{{ value }}' is not a valid email.",
* mode = 'strict',
* normalizer = 'trim'
* )
将其转换为
* @Assert\Email(
* message = "The email '{{ value }}' is not a valid email.",
* mode = "strict",
* normalizer = "trim"
* )
解决了:)