我在表单构建器中有这段代码
->add('user', 'entity', array(
'class' => 'Acme\Entity\User',
'query_builder' => function(EntityRepository $er) use ($options) {
return $er->createQueryBuilder('u')
->where('u.id = :id')
->setParameter('id',$options['my'])
->orderBy('u.name', 'ASC');},))
当我回显$options['my']
时,我在构建器中得到1
的输出。
现在,当我提交表单时,我得到NULL作为User对象。
但是,如果我使用->setParameter('id',1)
,那么它可以正常工作。
现在如果我使用这个
在构建表单中 $options['test'] = 1
并使用
->setParameter('id',$options['test'])
然后它也可以正常工作。
但是 - > setParameter('id',$ options ['my'])无法直接使用。它在表单中回显为1,因此值在该变量中。
我该怎么办?
答案 0 :(得分:1)
这是类型的常见错误。 1
在第一种情况下是字符串,在第二种情况下是 int 。试试这是否有效:
->setParameter('id',intval($options['my']))
您的调试确实很好,但最好使用var_dump
而不是echo
。您还可以将这些类型与gettype()
进行比较。
将var_dump($options['my'])
与var_dump($options[test'])
进行比较。
将gettype($options['my'])
与gettype($options['test'])
进行比较。