我正在尝试在两个实体之间进行双向关联。问题在于,从Book我可以得到他们的主人,但是从所有者我无法获得所拥有的书籍。
以下是代码的重要部分:
的Acme \ BookBundle \实体\书;
/**
* @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 \实体\用户;
/**
* @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();
有谁知道我做错了什么?提前谢谢。
答案 0 :(得分:9)
$ owner-> getOwnedBooks()是所有者的集合。尝试使用foreach循环遍历集合。
$books = $owner->getOwnedBooks();
foreach ($books as $book) {
echo $book->getName() . ' <br/>';
}
答案 1 :(得分:3)
错误信息非常明确:您正在尝试获取图书集的名称,而不是尝试获取单本图书的名称。