Doctrine2许多一对一的双向关系不工作(Doctrine2 Many-to-one bidir

2019-09-18 02:39发布

我试图做2个实体之间的双向关联。 问题是,从本书我能得到他们的老板,但是从所有者我不能拥有的书籍。

这里是代码的重要组成部分:

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

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

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

$books = $owner->getOwnedBooks()->getName();

有谁知道我做错了吗? 先感谢您。

Answer 1:

$所有者 - > getOwnedBooks()是业主的集合。 通过与foreach循环集合尝试循环。

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


Answer 2:

该错误信息是很清楚的:你想,而不是试图让一本书的名字,以获取图书的集合的名称。



文章来源: Doctrine2 Many-to-one bidirectional relationship not working