我有两张表:Place
和Description
地点可以包含0个,1个或更多描述。
所以在 Place 实体中,我有一个描述字段:
/**
* @ORM\OneToMany(targetEntity="Description", mappedBy="place")
*/
private $descriptions;
在描述实体中,我有一个位置字段:
/**
* @ORM\ManyToOne(targetEntity="Place", inversedBy="descriptions")
*/
private $place;
我想使用QueryBuilder来获取基于Place的字段的描述。像
这样的东西SELECT * FROM Description WHERE Place.id = 439483
我想我应该使用join,但它也会返回Places列。我怎么才能根据Place条件得到描述?
由于
编辑:这是我尝试的内容:
$em = $this->getEntityManager();
$placeRepository = $em->getRepository("AppBundle:Place");
$q = $placeRepository->createQueryBuilder('p')
->select("d")
->innerJoin("p.descriptions", "d")
->where("p.id = 439483");
$q = $q->getQuery();
$res = $q->getResult();
return $res;
但它返回一个地方和描述,我只想要描述。
答案 0 :(得分:0)
下次发布您实际尝试过的内容。但由于这是一个简单的查询,所以:
$em = $this->getEntityManager();
$placeRepository = $em->getRepository("AppBundle:Place");
$q = $placeRepository->createQueryBuilder('p')
->select("d")
->innerJoin("p.descriptions", "d")
->where("p.id = 439483");
$q = $q->getQuery();
$res = $q->getResult();
return $res;
答案 1 :(得分:0)
要获取与某个地点相关联的说明,您可以这样做:
$em = $this->getEntityManager();
$descriptionRepository = $em->getRepository("AppBundle:Description");
$q = $descriptionRepository->createQueryBuilder('d')
->select("d")
->innerJoin("d.place", "p")
->where("p.id = 439483");
$q = $q->getQuery();
$res = $q->getResult();
return $res;