好了朋友们,
我有基于具有整数字段的实体的表构建,
id
, user_id
, project_id
, stats
, risks
.
现在我正在尝试构建仅包含字段的表单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
(或 true 或 sth)0
且未选择(或 false)的字段统计信息。接下来在编辑表单后,我想发布对此字段的更改 - 所以选定的字段是1
,而不是选定0
的。
@编辑
我的实体如下所示:
/**
* @ORM\Column(name="stats", type="boolean", nullable=false)
*
* @var boolean
*/
protected $stats=true;
如您所见,默认值为 true。
在控制器中,我正在传递这样的值:
$form = $this->createForm(new ModuleType($em), $module, array('user' => $user, 'project' => $project));
$user 和 $project 需要选择正确的行。
模块类型中的下一步
$builder
->add('module', 'checkbox', array(
'label' => 'Stats',
));
表格模块,将 tinyint(Symfony 解释为布尔值)设置为 1 的字段 stats 设置为 1,但复选框 stats 仍未选中。
我也在尝试这样的事情:
$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_id 和 project_id 选择统计信息。查询返回正确的值,但值为 true 的复选框仍未选中。