Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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 选择中的关联计数_Php_Search_Doctrine Orm_Zend Framework2 - Fatal编程技术网

Php 选择中的关联计数

Php 选择中的关联计数,php,search,doctrine-orm,zend-framework2,Php,Search,Doctrine Orm,Zend Framework2,我有一个候选人条令实体,这个实体与一个实体组 在索引页上,我显示了所有候选人 现在,我为组实体制作了一个带有ObjectMultiCheckbox对象的表单 选中复选框并提交表单后,我使用doctrineQueryBuilder仅显示与所选实体关联的候选实体 这很好,但在形式上,我想显示有多少候选人与某个群体相关。 我可以使用字段集中ObjectMultiSelectCheckbox定义中的label\u generator选项执行此操作: namespace MeCandidate\Form;

我有一个
候选人
条令实体,这个实体与一个实体

在索引页上,我显示了所有候选人

现在,我为
实体制作了一个带有
ObjectMultiCheckbox
对象的表单

选中复选框并提交表单后,我使用doctrine
QueryBuilder
仅显示与所选实体关联的候选实体

这很好,但在形式上,我想显示有多少候选人与某个群体相关。 我可以使用字段集中
ObjectMultiSelectCheckbox
定义中的
label\u generator
选项执行此操作:

namespace MeCandidate\Form;

use Zend\Form\Fieldset;
use Zend\InputFilter\InputFilterProviderInterface;

class SearchFieldset extends Fieldset implements InputFilterProviderInterface
{
    public function __construct($objectManager)
    {
        parent::__construct($name = 'search');
        $this->add(
            array(
                'type' => 'DoctrineModule\Form\Element\ObjectMultiCheckbox',
                'name' => 'function',
                'attributes' => array(
                    'class' => 'searchCriteria'
                ),
                'options' => array(
                    'label' => 'Group',
                    'object_manager' => $objectManager,
                    'target_class'   => 'MeCandidate\Entity\Group',
                    'label_generator' => function($targetEntity) {
                        return ' ' .  $targetEntity->getName() . '('. $targetEntity->getCandidates()->count() .')';
                    },
                ),
            )
        );

    }

    public function getInputFilterSpecification()
    {       
        return array(
            array(
                'name' => 'group',
                'required' => false,
            ),

        );
    }
}
这一切都按预期进行。 因此,当我选择组X时,它会显示与组X关联的所有候选对象

但现在只显示了所有候选人的选择,与某个组关联的候选人数量不再准确,因为这显示了与该组关联的候选人总数,但我需要当前选择中与该组关联的候选人数量

我想我可以通过在创建表单时将当前的QueryBuilder注入表单来修复它。然而,我找不到一个好方法来获得正确的计数

我希望我想做的是清楚的,如果不问我什么的话

更新: 我有一个有效的解决方案,在我的
实体中,我有一个方法
getCandidateCount
它对当前选择的候选对象进行数组收集,并检查是否有关联的候选对象在选择中。我调整了字段集中的
label\u generator
函数以调用
getCandidateCount

问题是,在验证表单后,我必须重新创建表单,并将当前选择的候选项注入表单中,以便将其传递给
label\u generator
函数中的
getCandidateCount
方法

它工作,但不是很优雅,所以如果有人有如何更好的想法,我会喜欢听他们

谢谢,
约拉姆

不确定是否理解“当前选择”?如果您只是按组筛选,则每个组中关联的候选对象的数量不会更改?如果我选择组X,则您是对的。组X的关联候选对象仍然相同。但与组Y关联的候选对象不再正确,因为并非所有候选对象都属于组X和Y。