物体实体的计数Symfony 4



我有两个表。1-属性2型。每个属性都有类型。在我的过滤器表格中,我想在复选框中显示类型,以及在某种类型的属性的数量之外。

这是我在我的存储库中的查询:

public function countByType($type){
        return $this->createQueryBuilder('p')
            ->select('count(p.id)')
            ->where('p.type = :type')
            ->setParameter('type', $type)
            ->getQuery()
            ->execute();
    }

我的控制器中的代码:

$typeID = $this->getDoctrine()->getRepository(Type::class)->findAll();
        foreach ($typeID as $tID){
            $propertyCountByType = $this->getDoctrine()->getRepository(Property::class)->countByType($tID);
        }

所以我要做的就是将循环中的类型ID传递给查询以给我计数。此代码仅显示表中的最后一个类型的计数。

您在每次迭代时都覆盖$propertyCountByType,这就是为什么您仅获得最后一个值。

如果要存储每个计数单独存储,则可以将值存储在数组

$typeID = $this->getDoctrine()->getRepository(Type::class)->findAll();
$propertyCountByType = array();
foreach ($typeID as $tID) {
    $propertyCountByType[] = $this->getDoctrine()->getRepository(Property::class)->countByType($tID);
    //                  ^------------ add the current result to the array
}

该数组可以在$tID上以这种方式索引:

$propertyCountByType[$tID] = $this->getDoctrine()->getRepository(Property::class)->countByType($tID);

或更好的是,在单个查询中使用

的组
public function countByType(){
    return $this->createQueryBuilder('p')
                ->select('count(p.id) AS CountByType', 'p.type AS type') // each row will contain the count and the type
                ->groupBy('p.type')
                ->getQuery()
                ->getArrayResult(); // get the result as array
}

相关内容

  • 没有找到相关文章

最新更新