Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.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 使用其他实体和QueryBuilder生成表单symfony2_Php_Forms_Symfony_Doctrine Orm - Fatal编程技术网

Php 使用其他实体和QueryBuilder生成表单symfony2

Php 使用其他实体和QueryBuilder生成表单symfony2,php,forms,symfony,doctrine-orm,Php,Forms,Symfony,Doctrine Orm,我想知道如何生成一个表单,询问用户居住在哪个国家 目前,这是我在AnnonceType.php(表单)中的代码 我正在寻找自定义查询,因为我的数据库中有一个geom数据列,如果doctrine加载它,我的应用程序就会崩溃 为了清楚起见,我只想创建一个选择字段,向用户询问标签_country(从我的数据库中),并将id_country作为值。 我试图用->选择覆盖createQueryBuilder()中的选择字段,但似乎不起作用 [Semantical Error] line 0, col 72

我想知道如何生成一个表单,询问用户居住在哪个国家

目前,这是我在AnnonceType.php(表单)中的代码

我正在寻找自定义查询,因为我的数据库中有一个geom数据列,如果doctrine加载它,我的应用程序就会崩溃

为了清楚起见,我只想创建一个选择字段,向用户询问标签_country(从我的数据库中),并将id_country作为值。 我试图用->选择覆盖createQueryBuilder()中的选择字段,但似乎不起作用

[Semantical Error] line 0, col 72 near 'p': Error: 'p' is already defined.

感谢您的帮助

出现此错误消息,因为当您这样做时

$er->createQueryBuilder('p')
它已经从('nftAnnonceBundle:Pays','p')隐式创建了
->
此外,您不能在QueryBuilder中选择显示的标签,而是在
choice\u label
属性或entity
\u\u toString
方法中选择

所以你可以这么做

$builder
    ->add('idPa', 'entity', array( 
        'label' => 'Pays',
        'class' => 'nftAnnonceBundle:Pays',
        'choice_label' => 'nomPa'
     ))
看一看

[以下评论编辑] 如果要出于性能目的限制EntityType表单字段加载的字段,可以将
QueryBuilder
与一起使用。在这种情况下,它可能类似于:

$builder
    ->add('idPa', 'entity', array( 
        'label' => 'Pays',
        'class' => 'nftAnnonceBundle:Pays',
        'query_builder' => function(EntityRepository $er) {    
            return $er->createQueryBuilder('p')->select('partial p.{id,nomPa}')                   
        },
        'property' => 'nom_pa'
     ))

出现此错误消息是因为

$er->createQueryBuilder('p')
它已经从('nftAnnonceBundle:Pays','p')隐式创建了
->
此外,您不能在QueryBuilder中选择显示的标签,而是在
choice\u label
属性或entity
\u\u toString
方法中选择

所以你可以这么做

$builder
    ->add('idPa', 'entity', array( 
        'label' => 'Pays',
        'class' => 'nftAnnonceBundle:Pays',
        'choice_label' => 'nomPa'
     ))
看一看

[以下评论编辑] 如果要出于性能目的限制EntityType表单字段加载的字段,可以将
QueryBuilder
与一起使用。在这种情况下,它可能类似于:

$builder
    ->add('idPa', 'entity', array( 
        'label' => 'Pays',
        'class' => 'nftAnnonceBundle:Pays',
        'query_builder' => function(EntityRepository $er) {    
            return $er->createQueryBuilder('p')->select('partial p.{id,nomPa}')                   
        },
        'property' => 'nom_pa'
     ))

您的查询生成器不应该是
$er->createQueryBuilder()->select('p.nomPa')->from('nftAnnonceBundle:Pays','p')如果我没有将别名作为createQueryBuilder函数的参数,symfony将返回一个错误。您的查询生成器不应该是
$er->createQueryBuilder()->选择('p.nomPa')->从('nftAnnonceBundle:Pays,'p')如果我没有将别名作为createQueryBuilder函数的参数,symfony将返回一个错误。您好,谢谢您的回复!但是,当我运行这段代码时(老实说,我已经这么做了),原则是查询一个包含几何体值的整个对象,这使得我的应用程序由于大量数据加载而崩溃。。。我只想选择我的“label_pays”而不是整个对象,包括“geom_pays”,你知道吗?好的,也许你可以尝试在
queryBuilder
中使用它。类似这样的内容:
return$er->createQueryBuilder('p')->select('partial p.{id,nomPa}')
Hello,谢谢回复!但是,当我运行这段代码时(老实说,我已经这么做了),原则是查询一个包含几何体值的整个对象,这使得我的应用程序由于大量数据加载而崩溃。。。我只想选择我的“label_pays”而不是整个对象,包括“geom_pays”,你知道吗?好的,也许你可以尝试在
queryBuilder
中使用它。类似这样:
return$er->createQueryBuilder('p')->select('partial p.{id,nomPa}')