【发布时间】:2018-11-06 09:53:52
【问题描述】:
从 Symfony4/Doctrine 中,我需要使用实体的存储库自定义方法选择所有“不同”对象,下面是一个简单的示例:
实体的最小示例表:
一个简单的$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 包含一个字符串结果数组,而不是一个对象数组(我想要一个实体对象数组)。
我该怎么做?
【问题讨论】:
-
不确定这是否是唯一的错误,但您必须至少选择 id 来补充实体
-
hmmm 我如何选择 id 和 name,但只有 name 不同:?
-
group by myentity.name而不是distinct呢? -
groupBy 完成了这项工作!我发现这是一种奇怪的方法,但它有效^^我有一个对象列表,没有任何具有相同名称的重复对象