2014-02-13 62 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;