我正在尝试映射我的实体,但是当我执行架构时,我总是会收到此错误:更新,删除或创建。所以我尝试了很多解决方案,例如将这一行添加到我的autoload.php:
AnnotationRegistry::registerFile(__DIR__.'/../vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/Driver/AnnotationDriver.php');
但它仍然不起作用......这是冲突中的代码:
文件实体:
/**
* @var integer
*
* @ORM\Column(type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\OnetoMany(targetEntity="Intranet\ExampleBundle\Entity\File_Liaison", mappedBy="idFile", cascade={"persist"})
* @ORM\JoinColumn(name="id", referencedColumnName="idFile")
*/
private $id;
File_Liaison实体:
/**
* @var integer
*
* @ORM\ManyToOne (targetEntity="Intranet\ExampleBundle\Entity\File", inversedBy="id")
* @ORM\JoinColumn (name="idFile", referencedColumnName="id")
*/
private $idFile;
这是错误:
[Doctrine\Common\Annotations\AnnotationException]
[Semantical Error] The annotation "@Doctrine\ORM\Mapping\OnetoMany" in property Intranet\ExampleBundle\Entity\File::$id does not exist, or could not be auto-loaded.
我读了很多关于这个问题的话题,但我找不到任何有用的东西。 谢谢您的帮助 ! : - )
答案 0 :(得分:0)
错误在于您尝试添加一个文件有多个File_liaison的关系,因此File端应该有一个File_liaison集合。情况并非如此,因为$id
不能同时是自动生成的整数和实体集合。
尝试清理$id
并在文件实体中添加属性,例如
/**
* @ORM\OnetoMany(targetEntity="Intranet\ExampleBundle\Entity\File_Liaison", mappedBy="idFile", cascade={"persist"})
*
*/
private $liaisons;
然后实现适当的addLiaison,removeLiaison和getLiaisons方法
/**
* Add liaison
*
* @param \Intranet\ExampleBundle\Entity\File_Liaison $liaison
*/
public function addLiaison(\Intranet\ExampleBundle\Entity\File_Liaison $liaison)
{
$this->liaisons[] = $liaison;
}
/**
* Get liaisons
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getLiaisons()
{
return $this->liaisons;
}
最后为$idFile
/**
* @var integer
*
* @ORM\ManyToOne (targetEntity="Intranet\ExampleBundle\Entity\File", inversedBy="liaisons")
* @ORM\JoinColumn (name="idFile", referencedColumnName="id")
*/
private $idFile;
显然这没有经过测试,但它可以让你很好地了解你做错了什么。
答案 1 :(得分:0)
感谢您的帮助!
错误仍然出现但我解决了这个问题!文件实体出了点问题。我改变了它:
/**
* @ORM\Id
* @var integer
*
* @ORM\Column(name="refFile", type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*
* @ORM\OneToMany(targetEntity="Intranet\ExampleBundle\Entity\File_Liaison", mappedBy="idFile", cascade={"persist"})
* @ORM\JoinColumn(name="idFile", referencedColumnName="refFile")
*/
private $refFile;