关于关系的 WHERE 语句



我有两个表:PlaceDescription

一个地点可以包含 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;

相关内容

  • 没有找到相关文章

最新更新