我有两个表:Place
和Description
一个地点可以包含 0、1 或多个描述。
所以在就地实体中,我有一个描述字段:
/**
* @ORMOneToMany(targetEntity="Description", mappedBy="place")
*/
private $descriptions;
在描述实体中,我有一个位置字段:
/**
* @ORMManyToOne(targetEntity="Place", inversedBy="descriptions")
*/
private $place;
我想使用查询构建器根据地点的字段获取描述。类似的东西
SELECT * FROM Description WHERE Place.id = 439483
我想我应该使用join,但它也返回"地点"列。如何仅根据地点条件获取描述?
谢谢
编辑:这是我尝试过的:
$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;
但它返回一个地方和描述,我只想要描述。
下次请发布您实际尝试过的内容。但由于这是一个简单的查询,因此:
$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;
要获取与某个地点关联的描述,您可以执行以下操作:
$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;