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();
但是,下次加載$用戶時鏈接將不會被加載。
任何想法爲什麼鏈接實體沒有加載?
我從來沒有使用上的** **多對一關係** @ ORM \標識**註解。我認爲這只是表格的ID,而不是一般的ID。你嘗試刪除它嗎? –
其實我在這兩個屬性上使用了@ORM \ Id,因爲我想從這兩列中創建主鍵(就像它將在ManyToMany關係中完成的那樣)。不過,我試圖設置一個Id列,仍然有同樣的結果。 – skwi