2つのエンティティ間で双方向の関連付けを行おうとしています。問題は、本からは所有者を取得できますが、所有者からは本を所有することができないということです。
コードの重要な部分は次のとおりです。
Acme \ BookBundle \ Entity \ Book;
/**
* @ORM\ManyToOne(targetEntity="Acme\UserBundle\Entity\User", inversedBy="owned_books")
* @ORM\JoinColumn(name="owner_id", referencedColumnName="id")
*/
protected $owner;
/**
* Get owner
*
* @return Acme\UserBundle\Entity\User
*/
public function getOwner()
{
return $this->owner;
}
Acme \ UserBundle \ Entity \ User;
/**
* @ORM\OneToMany(targetEntity="Acme\BookBundle\Entity\Book", mappedBy="owner")
*/
protected $owned_books;
public function __construct()
{
$this->owned_books = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Get owned_books
*
* @return Doctrine\Common\Collections\Collection
*/
public function getOwnedBooks()
{
return $this->owned_books;
}
次に、データを取得するには:
この作品
$book = $this->getDoctrine()
->getRepository('BookBundle:Book')
->find(1);
$owner = $book->getOwner()->getFirstName();
これは機能しません(致命的なエラーが発生します:未定義のメソッドDoctrine \ ORM \ PersistentCollection :: getName()を呼び出します)
$owner = $this->getDoctrine()
->getRepository('UserBundle:User')
->find(1);
$books = $owner->getOwnedBooks()->getName();
誰かが私が間違っていることを知っていますか?前もって感謝します。