0

我的表单生成器中有此代码

->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 ,因此值在该变量中。

我该怎么办?

4

1 回答 1

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'])

于 2012-08-23T09:47:34.417 回答