我正在尝试映射我的实体,但是当我执行架构:更新,删除或创建时,我总是收到此错误。所以我尝试了许多解决方案,例如将此行添加到我的自动加载中.php:
AnnotationRegistry::registerFile(__DIR__.'/../vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/Driver/AnnotationDriver.php');
但它仍然不起作用...下面是冲突的代码:
文件实体:
/**
* @var integer
*
* @ORMColumn(type="integer", nullable=false)
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
* @ORMOnetoMany(targetEntity="IntranetExampleBundleEntityFile_Liaison", mappedBy="idFile", cascade={"persist"})
* @ORMJoinColumn(name="id", referencedColumnName="idFile")
*/
private $id;
File_Liaison实体:
/**
* @var integer
*
* @ORMManyToOne (targetEntity="IntranetExampleBundleEntityFile", inversedBy="id")
* @ORMJoinColumn (name="idFile", referencedColumnName="id")
*/
private $idFile;
这是错误:
[DoctrineCommonAnnotationsAnnotationException]
[Semantical Error] The annotation "@DoctrineORMMappingOnetoMany" in property IntranetExampleBundleEntityFile::$id does not exist, or could not be auto-loaded.
我阅读了许多关于这个问题的主题,但我没有找到任何有效的内容。感谢您的帮助!:-)
错误是您尝试添加一个关系,其中一个文件具有许多File_liaison因此文件端应具有File_liaison集合。事实并非如此,因为$id
不能既是自动生成的整数又是实体集合。
尝试清理$id
并在 File 实体中添加属性,如下所示
/**
* @ORMOnetoMany(targetEntity="IntranetExampleBundleEntityFile_Liaison", mappedBy="idFile", cascade={"persist"})
*
*/
private $liaisons;
然后实现适当的 addLiaison、removeLiaison 和 getLiaisons 方法
/**
* Add liaison
*
* @param IntranetExampleBundleEntityFile_Liaison $liaison
*/
public function addLiaison(IntranetExampleBundleEntityFile_Liaison $liaison)
{
$this->liaisons[] = $liaison;
}
/**
* Get liaisons
*
* @return DoctrineCommonCollectionsCollection
*/
public function getLiaisons()
{
return $this->liaisons;
}
最后更新File_liaison 反转者 为 $idFile
/**
* @var integer
*
* @ORMManyToOne (targetEntity="IntranetExampleBundleEntityFile", inversedBy="liaisons")
* @ORMJoinColumn (name="idFile", referencedColumnName="id")
*/
private $idFile;
显然,这没有经过测试,但它应该让你很好地了解你做错了什么。
感谢您的帮助!
错误仍然出现,但我解决了问题!文件实体有问题。我改变了它:
/**
* @ORMId
* @var integer
*
* @ORMColumn(name="refFile", type="integer")
* @ORMGeneratedValue(strategy="AUTO")
*
* @ORMOneToMany(targetEntity="IntranetExampleBundleEntityFile_Liaison", mappedBy="idFile", cascade={"persist"})
* @ORMJoinColumn(name="idFile", referencedColumnName="refFile")
*/
private $refFile;