Доктрина 2: отношение OneToMany, сущность не загружена - PullRequest
0 голосов
/ 04 ноября 2011

Вот моя проблема: у меня есть 3 сущности Item, User и Link выше (эти классы также имеют обычные геттеры и сеттеры).

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;

    //...

}

Я не использовалсвязь ManyToMany из-за свойства $ time в классе Link.

Когда я создаю ссылку, я делаю это следующим образом:

$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();

Однако данные записываются в базу данныхкогда я вызываю $ user-> getLinks (), он возвращает NULL.Событие пыталось сделать это:

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

Но ссылка не будет загружена в следующий раз, когда будет загружен $ user.

Есть идеи, почему не загружаются объекты Link?

1 Ответ

0 голосов
/ 07 ноября 2011

OK Проблема решена.

Аннотации начинаются с / * вместо / ** в классах User и Item.

Просто глупая ошибка ...

...