我使用符号2和条令,得到以下错误:
[语义错误]属性Wibiya\WebsiteBundle\Entity\Rules::$RuleId中的注释"@Doctrine\ORM\Mapping\RuleId"不存在或无法自动加载。
Rules
实体中包含列/字段。
/**
* @var integer $RuleId
* @ORMRuleId
* @ORMColumn(name="RuleId", type="integer")
* @ORMGeneratedValue(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和条令2.1.6
RuleId
注释,只有Id
[参见文档]。
只需在主键字段上使用@ORMId
即可定义所有实体。
@ORMId
只是原则映射中主键字段的注释,它与MySql表中主键的列名无关。您可以保留主键字段的任何名称,并在映射中将其指定为@ORMColumn(name="column_name", type="integer")
。