Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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 Symfony2表格+;条令-选择_Php_Mysql_Forms_Symfony_Doctrine Orm - Fatal编程技术网

Php Symfony2表格+;条令-选择

Php Symfony2表格+;条令-选择,php,mysql,forms,symfony,doctrine-orm,Php,Mysql,Forms,Symfony,Doctrine Orm,好的,伙计们 我有一个基于实体和整数字段的表构建 id,用户id,项目id,统计数据,风险 现在我正在尝试只使用字段stats,risk构建表单。因此,我通过userId和projectId进行选择: $dql = "SELECT m FROM DevDashProjectBundle:Module m WHERE m.user =" .$options['user']->getId()."AND m.project =" .$options['project']->

好的,伙计们

我有一个基于实体和整数字段的表构建

id
用户id
项目id
统计数据
风险

现在我正在尝试只使用字段
stats
risk
构建表单。因此,我通过
userId
projectId
进行选择:

$dql = "SELECT m FROM DevDashProjectBundle:Module m WHERE m.user ="
    .$options['user']->getId()."AND m.project ="
    .$options['project']->getId();
$results = $this->entityManager->createQuery($dql)->getArrayResult();  
现在我想构建一个表单,其中选择值为
>0的字段stats(或true或sth),而不选择值为
0
(或false)的字段stats。下一步编辑表单后,我想将更改发布到此字段-因此所选字段是
1
,而不是
0

@编辑

我的实体如下所示:

 /**
 * @ORM\Column(name="stats", type="boolean", nullable=false)
 * 
 * @var boolean
 */
protected $stats=true;
  $form = $this->createForm(new ModuleType($em), $module, array('user' => $user, 'project' => $project));
        $builder
        ->add('module', 'entity', array(
            'class' => 'DevDashProjectBundle:Module',
            'mapped' => true,
            'multiple' => true,
            'expanded' => true,
            'property' => 'stats',
            'query_builder' => function(EntityRepository $er) use ($options){
                return $er
                    ->createQueryBuilder('m')
                    ->where(
                        'm.user =' .$options['user']->getId().
                        'AND m.project=' .$options['project']->getId()
                    );
            }
        )
    );
如您所见,默认值为true

在控制器中,我传递如下值:

 /**
 * @ORM\Column(name="stats", type="boolean", nullable=false)
 * 
 * @var boolean
 */
protected $stats=true;
  $form = $this->createForm(new ModuleType($em), $module, array('user' => $user, 'project' => $project));
        $builder
        ->add('module', 'entity', array(
            'class' => 'DevDashProjectBundle:Module',
            'mapped' => true,
            'multiple' => true,
            'expanded' => true,
            'property' => 'stats',
            'query_builder' => function(EntityRepository $er) use ($options){
                return $er
                    ->createQueryBuilder('m')
                    ->where(
                        'm.user =' .$options['user']->getId().
                        'AND m.project=' .$options['project']->getId()
                    );
            }
        )
    );
$user和$project必须选择正确的行

模块类型中的下一个

        $builder
        ->add('module', 'checkbox', array(
            'label' => 'Stats',
        ));
表模块获取的字段统计信息为tinyint(Symfony将其解释为布尔值),设置为1,但复选框stats仍处于未选中状态

我也在尝试这样的事情:

 /**
 * @ORM\Column(name="stats", type="boolean", nullable=false)
 * 
 * @var boolean
 */
protected $stats=true;
  $form = $this->createForm(new ModuleType($em), $module, array('user' => $user, 'project' => $project));
        $builder
        ->add('module', 'entity', array(
            'class' => 'DevDashProjectBundle:Module',
            'mapped' => true,
            'multiple' => true,
            'expanded' => true,
            'property' => 'stats',
            'query_builder' => function(EntityRepository $er) use ($options){
                return $er
                    ->createQueryBuilder('m')
                    ->where(
                        'm.user =' .$options['user']->getId().
                        'AND m.project=' .$options['project']->getId()
                    );
            }
        )
    );

因为我需要按用户id和项目id选择统计信息。查询返回正确的值,但值为true的复选框仍然未选中

您可以在模块实体上构建表单,如下所示:

$form = $this->createFormBuilder($module)
        ->add('stats', 'checkbox', array('label' => 'Stats'))
        ->getForm();
但是实体中的stats字段必须声明为boolean。 另见这一问题:

编辑: 这: $builder->add(“模块”、“复选框”、“数组('label'=>'Stats'))

应该是 $builder->add('stats,'checkbox',数组('label'=>'stats'))

以匹配字段的名称