Symfony4 / Doctrine,如何选择“不同”的对象? getResult()返回字符串数组,而不是对象数组

时间:2018-11-06 09:53:52

标签: symfony doctrine symfony4

在Symfony4 / Doctrine中,我需要使用一个简单的示例下面的实体的存储库自定义方法选择所有“不同”对象:

实体的最小示例表:

enter image description here

一个简单的$em->getRepository(MyEntity::class)->findAll();以对象结构返回我表的所有数据。

我正在寻找一种方法来执行相同的查询,但与列名的关系不同。在我的示例中,此查询必须返回对象1、3和5。

我尝试了该实体的存储库自定义方法:

public function getDistinct(){
    $query = $this->createQueryBuilder('myentity');
    $res = $query
        ->select("myentity.name")
        ->distinct(true)
        ->getQuery()
        ->getResult();
    return $res;
}

但是$res var包含一个字符串结果数组,而不是一个对象数组(我想要一个实体Objects数组)。

我该怎么做?

1 个答案:

答案 0 :(得分:3)

尝试使用group by myentity.name代替distinct

$res = $query
   ->select("myentity")
   ->groupBy("myentity.name")
   ->getQuery()
   ->getResult();

这应该可以完成预期的工作。