Php Symfony-使用EntityType进行类别计数
我有一个搜索表单,它从数据库中获取类别,并将每个类别名称显示为复选框,通过EntityType检索,我想在类别名称前面显示count类别,我设法从数据库中对每个类别进行计数,并将结果放入如下数组:$categCount[name]=count 如何使用EntityType在每个类别名称前显示她的计数Php Symfony-使用EntityType进行类别计数,php,forms,symfony,entity,Php,Forms,Symfony,Entity,我有一个搜索表单,它从数据库中获取类别,并将每个类别名称显示为复选框,通过EntityType检索,我想在类别名称前面显示count类别,我设法从数据库中对每个类别进行计数,并将结果放入如下数组:$categCount[name]=count 如何使用EntityType在每个类别名称前显示她的计数 现在。我不确定您的实体看起来如何,但如果您在同一实体中有计数,您可以执行以下操作: ->add('categories', EntityType::class, ['class' =>
现在。我不确定您的实体看起来如何,但如果您在同一实体中有计数,您可以执行以下操作:
->add('categories', EntityType::class, ['class' => 'AppBundle:Categorie',
'choice_label' => 'getNameWithCategoriesCount',
'multiple' => true,
'expanded' => true,
'required' => false,
])
在你的实体中
public function getNameWithCategoriesCount(){
return $this->getName().' '.$this->getCount();
}
或者(未测试),您可以:
->add(
'categories',
EntityType::class,
[
'class' => 'AppBundle:Categorie',
'choice_label' => function ($category) use ($this-em) {
return $category->getDisplayName() $this->em->getRepo..()->getCount($category);
},
'multiple' => true,
'expanded' => true,
'required' => false,
]
)
注意:对于这种方法,您需要将表单声明为服务并通过entityManager酷,不知道这是可能的,非常感谢。您知道如何访问实体中的存储库,以便实现$this->getCount()方法吗?虽然可能(将实体设置为服务并在构造函数中插入实体管理器),但在实体中使用实体管理器是一种不好的做法。我建议将计数数据放在同一个实体中。您可以设置一个crone作业来使用自定义控制台命令docs更新count属性,我希望我的项目尽可能简单
->add(
'categories',
EntityType::class,
[
'class' => 'AppBundle:Categorie',
'choice_label' => function ($category) use ($this-em) {
return $category->getDisplayName() $this->em->getRepo..()->getCount($category);
},
'multiple' => true,
'expanded' => true,
'required' => false,
]
)