わかりました、皆さん、
整数フィールドを持つエンティティに基づいてテーブルを作成しました。
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) を持つフィールド stats が選択され、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 が必要です。
次の ModuleType
$builder
->add('module', 'checkbox', array(
'label' => 'Stats',
));
table モジュールは、1 に設定された tinyint (Symfony によってブール値として解釈される) であるフィールド統計を取得しましたが、チェックボックスの統計はまだチェックされていません。
私もこのようにsthを試していました:
$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 のチェックボックスはまだチェックされていません。