Doctrine2多对一双向关系无法正常工作

jon*_*fer 3 doctrine symfony doctrine-orm

我正在尝试在两个实体之间进行双向关联.问题是,从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;
}
Run Code Online (Sandbox Code Playgroud)

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;
}
Run Code Online (Sandbox Code Playgroud)

然后,获取数据:

这个作品

$book = $this->getDoctrine()
  ->getRepository('BookBundle:Book')
  ->find(1);

$owner = $book->getOwner()->getFirstName();
Run Code Online (Sandbox Code Playgroud)

这不起作用(给出致命错误:调用未定义的方法Doctrine\ORM\PersistentCollection :: getName())

$owner = $this->getDoctrine()
    ->getRepository('UserBundle:User')
    ->find(1);

$books = $owner->getOwnedBooks()->getName();
Run Code Online (Sandbox Code Playgroud)

有谁知道我做错了什么?先感谢您.

Nib*_*orb 9

$ owner-> getOwnedBooks()是Owners的集合.尝试使用foreach循环遍历集合.

$books = $owner->getOwnedBooks();
foreach ($books as $book) {
    echo $book->getName() . ' <br/>';
} 
Run Code Online (Sandbox Code Playgroud)