2

我使用 symfony2 和教义,我收到以下错误:

[语义错误] Wibiya\WebsiteBundle\Entity\Rules::$RuleId 属性中的注释“@Doctrine\ORM\Mapping\RuleId”不存在,或无法自动加载。

实体包含其中Rules的列/字段。

    /**
     * @var integer $RuleId
     * @ORM\RuleId
     * @ORM\Column(name="RuleId", type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $RuleId;

这是我试图运行的功能:

$em = $this->getDoctrine()->getEntityManager();
$Rules = $em->getRepository('WibiyaWebsiteBundle:Rules')->findAllOrderedByName();

RulesRepository班级:

    public function findAllOrderedByName()
    {
        return $this->getEntityManager()
            ->createQuery('SELECT p FROM WibiyaWebsiteBundle:Rules p ORDER BY p.RuleName ASC')
            ->getResult();
    }

我试图把这条线放在底部autoload.php

require __DIR__ . "/../vendor/doctrine/lib/Doctrine/ORM/Mapping/Driver/AnnotationDriver.php";

但是,我得到了同样的错误。
我正在使用 Symfony 2.0.16 和 Doctrine 2.1.6

4

2 回答 2

3

Doctrine中没有RuleId注释,只是Id[ see docs ]。

只需@ORM\Id在主键字段上使用您定义的所有实体。

于 2012-09-04T17:24:28.470 回答
0

@ORM\Id只是学说映射中主键字段的注释,它独立于 MySql 表中主键的列名。您可以为您的主键字段保留任何名称,并在映射上将其指定为@ORM\Column(name="column_name", type="integer").

于 2013-03-25T05:52:20.270 回答