Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony-使用EntityType进行类别计数_Php_Forms_Symfony_Entity - Fatal编程技术网

Php Symfony-使用EntityType进行类别计数

Php Symfony-使用EntityType进行类别计数,php,forms,symfony,entity,Php,Forms,Symfony,Entity,我有一个搜索表单,它从数据库中获取类别,并将每个类别名称显示为复选框,通过EntityType检索,我想在类别名称前面显示count类别,我设法从数据库中对每个类别进行计数,并将结果放入如下数组:$categCount[name]=count 如何使用EntityType在每个类别名称前显示她的计数 现在。我不确定您的实体看起来如何,但如果您在同一实体中有计数,您可以执行以下操作: ->add('categories', EntityType::class, ['class' =>

我有一个搜索表单,它从数据库中获取类别,并将每个类别名称显示为复选框,通过EntityType检索,我想在类别名称前面显示count类别,我设法从数据库中对每个类别进行计数,并将结果放入如下数组:$categCount[name]=count

如何使用EntityType在每个类别名称前显示她的计数


现在。我不确定您的实体看起来如何,但如果您在同一实体中有计数,您可以执行以下操作:

->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,
            ]
        )