Symfony实体类型,无延迟加载


Symfony Entity Type, No lazy load

我创建了一个symfony实体表单类型,并使用QueryBuilder来获取实体。

我的Querybuilder看起来像这样:

 $qb = $this
            ->em
            ->getRepository('Namespace'Entity'Domain'Nic')
            ->createQueryBuilder('domainNic')
            ->join('domainNic.article', 'article')
            ->andWhere('article.category = :domainCategory')
            ->setParameter('domainCategory', Article::CATEGORY_DOMAINS)
            ->orderBy('article.title');

我的表单类型定义如下所示:

$builder->add(
            'withTld',
            'bootstrap_collection',
            array(
                'allow_add' => true,
                'allow_delete' => true,
                'add_button_text' => 'addtext',
                'delete_button_text' => 'deletetext',
                'type' => 'entity',
                'sub_widget_col'  => 5,
                'label' => '***',
                'options' => array(
                    'class' => 'Namespace'Entity'Domain'NIC',
                    'query_builder' => $qb,
                    'property' => 'title'
                )
            )
        );

结果看起来与预期完全一样,但对于每个找到的记录,Symfony都不使用QueryBuilder中的数据。相反,Symfony会重新获得每一张唱片的标题。

有人知道解决办法吗?我希望Symfony使用QueryBuilder中的数据。

在查询生成器中需要额外的select

$qb = $this
    ->em
    ->getRepository('Namespace'Entity'Domain'Nic')
    ->createQueryBuilder('domainNic')
    ->addSelect('article') // <---------------- THIS
    ->join('domainNic.article', 'article')
    ->andWhere('article.category = :domainCategory')
    ->setParameter('domainCategory', Article::CATEGORY_DOMAINS)
    ->orderBy('article.title');