【问题标题】:Doctrine2 [Semantical Error] Couldn't find constant?Doctrine2 [语义错误] 找不到常量?
【发布时间】:2014-04-16 04:54:16
【问题描述】:

我在尝试运行doctrine:generate:entities时出错:

[Doctrine\Common\Annotations\AnnotationException]
[语义错误] 找不到常量?,属性 Smartnode\TalkBundle\Entity\Post::$postowner。

这是我的帖子实体类:

namespace Smartnode\TalkBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Post
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="Smartnode\TalkBundle\Entity\PostRepository")
 */
class Post
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var integer
     *
     * @ORM\ManyToOne(targetEntity=“Smartnode\userBundle\Entity\User“)
     * @JoinColumn(name="postowner_id", referencedColumnName="id")
     */
    protected $postowner;

    /**
     * @var integer
     *
     * @ORM\ManyTonOne(targetEntity=“Smartnode\TalkBundle\Entity\Chan“)
     */
    private $postchan;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="creationdate", type="datetime")
     */
    private $creationdate;

这是我的用户实体类:

namespace Smartnode\userBundle\Entity;

use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;



/**
 * @ORM\Entity(repositoryClass="Smartnode\userBundle\Entity\UserRepository")
 * @ORM\Table(name="fos_user")
 */
class User extends BaseUser
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

【问题讨论】:

  • 您提供的内容看起来不错,您能否提供更多文件或其关系文件?
  • 我已经添加了 User 类,非常感谢您的帮助
  • 在您的Post 实体中,$postowner; 之后是什么?
  • 您是否还能够在此应用程序所在的系统上使用此方法生成其他实体?也许尝试删除属性之前的额外注释行?
  • @Chausser 感谢您的回答。是的,我已经在这个系统上生成了实体。我删除了评论区,但没有任何变化。

标签: symfony orm doctrine-orm


【解决方案1】:

问题是引用:/

有好的报价一切正常

感谢大家的帮助

【讨论】:

  • 老问题我不记得了,但我想我可以通过使用 ' 而不是 " 来解决它
  • 在原始邮政编码中使用(左双引号)代替"(双引号)。如果您忘记了=,也会出现同样的问题,例如:@ORM\ManyToOne(targetEntity"Smartnode\userBundle\Entity\User")
【解决方案2】:

问题创建者的答案是正确的。无论如何都不清楚,他所说的问题是引用的意思。

还应该使用 ' 而不是 " 来引用注释属性的值。

对我来说,问题是缺少报价。

代码错误:

/**
 * @ORM\OneToMany(targetEntity="UnternehmenBrancheZuordnung", mappedBy=_unternehmen")
 * @var ArrayCollection $_branchenZuordnungen
 */
private $_branchenZuordnungen;

正确的代码:

/**
 * @ORM\OneToMany(targetEntity="UnternehmenBrancheZuordnung", mappedBy="_unternehmen")
 * @var ArrayCollection $_branchenZuordnungen
 */
private $_branchenZuordnungen;

此处缺少的引号突出显示:mappedBy="_unternehmen"

【讨论】:

    猜你喜欢
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多