2011-11-04 93 views
0

這是我的問題:我有3個實體Item,User和Link上面(這些類也有通常的getter和setter)。學說2:OneToMany關係,實體未加載

class User { 

    //... 

    /* 
    * @ORM\OneToMany(targetEntity="Link", mappedBy="user", cascade={"persist", "remove"}) 
    * 
    */ 
    protected $links; 

    //... 

} 
class Item { 

    //... 

    /* 
    * @ORM\OneToMany(targetEntity="Link", mappedBy="item", cascade={"persist", "remove"}) 
    * 
    */ 
    protected $links; 

    //... 

} 
class Link { 

    /** 
    * @var datetime $time 
    * 
    * @ORM\Column(name="time", type="datetime") 
    */ 
    private $time; 

    /** 
    * 
    * @ORM\Id 
    * @ORM\ManyToOne(targetEntity="Item", inversedBy="links") 
    * @ORM\JoinColumn(name="item_id", referencedColumnName="id") 
    */ 
    private $item; 

    /** 
    * 
    * @ORM\Id 
    * @ORM\ManyToOne(targetEntity="User", inversedBy="links") 
    * @ORM\JoinColumn(name="user_id", referencedColumnName="id") 
    */ 
    private $user; 

    //... 

} 

我沒有用,因爲Link類的$ time屬性的多對多關係。

當我創建一個鏈接,我做這種方式:

$link = getExistingLink($item, $user); 

if (!$link) { 
    $link = new Link(); 
    $link->setItem($item); 
    $link->setUser($user); 
} 
$link->setTime(new \DateTime()); 
$em = $this->getEntityManager(); 
$em->persist($link); 
$em->flush(); 

的數據被寫入到數據庫中,但是當我調用$用戶> getLinks(),它返回NULL。我的事件試圖這樣做:

$user->addLink($link); 
$em->persist($user); 
$em->flush(); 

但是,下次加載$用戶時鏈接將不會被加載。

任何想法爲什麼鏈接實體沒有加載?

+0

我從來沒有使用上的** **多對一關係** @ ORM \標識**註解。我認爲這只是表格的ID,而不是一般的ID。你嘗試刪除它嗎? –

+0

其實我在這兩個屬性上使用了@ORM \ Id,因爲我想從這兩列中創建主鍵(就像它將在ManyToMany關係中完成的那樣)。不過,我試圖設置一個Id列,仍然有同樣的結果。 – skwi

回答

0

OK問題已解決。

在User和Item類中,註釋都以/ *而不是/ **開頭。

只是一個愚蠢的錯誤......