我需要帮助。
我有3个实体。 Book,Category和BookCategory - book可以有多个类别,所以我使用了另一个表。
我可以轻松访问使用BookCategory表的Book和Category,但我不知道如何通过Book-> BookCategory-> Category。
class Category
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="text")
*/
private $name;
/**
* @var Category
* @ORM\ManyToOne(targetEntity="Category", inversedBy="Category")
* @ORM\JoinColumn(name="parent", referencedColumnName="id")
*/
private $parent;
class BookCategory
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var Book
* @ORM\ManyToOne(targetEntity="Book", inversedBy="BookCategory")
* @ORM\JoinColumn(name="book_id", referencedColumnName="id")
*/
private $bookId;
/**
* @var Category
* @ORM\ManyToOne(targetEntity="Category", inversedBy="BookCategory")
* @ORM\JoinColumn(name="category_id", referencedColumnName="id")
*/
private $categoryId;
/**
* @var integer
*
* @ORM\Column(name="priority", type="integer")
*/
private $priority;
class Book
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="title", type="text")
*/
private $title;
/**
* @var string
*
* @ORM\Column(name="author", type="text")
*/
private $author;
/**
* @var float
*
* @ORM\Column(name="price", type="float")
*/
private $price;
我如何配置我的实体或如何使我的DQL达到想要的结果?
答案 0 :(得分:2)
使用您的代码,您只建立了从BookCategory
到Book
的关系。正如您所说,这使您可以将Book
与BookCategory
相关联。
要以另一种方式获取属于一本书的所有BookCategory
,您还需要指定此关系。您想要的是从OneToMany
到Book
的{{1}}关系。
BookCategory
添加必要的getter和setter后,<?php
//...
use Doctrine\ORM\Mapping\OneToMany;
class Book
{
//...
/**
* @OneToMany(targetEntity="BookCategory", mappedBy="bookId")
*/
private $bookCategories;
//...
}
class BookCategory
{
//...
/**
* @var Book
* @ORM\ManyToOne(targetEntity="Book", inversedBy="bookCategories")
* @ORM\JoinColumn(name="book_id", referencedColumnName="id")
*/
private $bookId;
//...
}
将为您提供一个包含属于getBookCategories()
的所有BookCategory
的数组。
有关更多详细信息,请查看Symfony2官方文档: http://symfony.com/doc/current/book/doctrine.html#relationship-mapping-metadata
修改强>
包含Book
声明。已更正use
的{{1}}属性。