2014-02-13 63 views
0


我试图映射我的实体,但当我执行模式时,我总是得到这个错误:更新,删除或创建。于是,我就喜欢加入这行来我autoload.php许多解决方案:学说2.0 - 语义错误

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. 

我读了很多关于这个问题的主题,但我没有找到任何可行的方法。 谢谢你的帮助! :-)

+1

你能否提供完整的错误文本? – Hast

+0

当然,我添加了它。 – Kefka

回答

0

错误在于您正在尝试添加一个关系,其中一个文件具有多个File_liaison,因此文件端应具有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; 
} 

最后更新File_liaison inversedBy为$idFile

/** 
* @var integer 
* 
* @ORM\ManyToOne (targetEntity="Intranet\ExampleBundle\Entity\File", inversedBy="liaisons") 
* @ORM\JoinColumn (name="idFile", referencedColumnName="id") 
*/ 
private $idFile; 

显然这没有经过测试,但它应该给你一个很好的想法,你做错了什么。

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;