Symfony 生成一大组查询的单个EntityType

Symfony 生成一大组查询的单个EntityType,symfony,doctrine-orm,Symfony,Doctrine Orm,我正在尝试提供一个大于300个选项的选择 $form->add('products', EntityType::class, array( 'class' => Product::class, 'query_builder' => function (ProductRepository $er) use ($customerId) { return $er->QBByCustomer($customerId); }, 'ch

我正在尝试提供一个大于300个选项的选择

$form->add('products', EntityType::class, array(
    'class' => Product::class,
    'query_builder' => function (ProductRepository $er) use ($customerId) {
        return $er->QBByCustomer($customerId);
    },
    'choice_label' => 'l.name',
));
QueryBuilder:

public function QBByCustomer($customer = null)
{
    return $this->QB()
        ->addSelect('p.name AS HIDDEN name')
        ->join('p.customer', 'c')
        ->join('p.label', 'l')
        ->where('c.customer = :customer')
        ->setParameter('customer', $customer)
        ->addOrderBy('name')
    ;
}
当我呈现表单时,Doctrine生成300个查询来加载每个相关对象


有没有办法告诉条令使用我提供的QueryBuilder中的标签,而不是触发尽可能多的查询作为可选项?

由于显示的标签是从链接实体(
label
)获取的,我们必须帮助条令加载它

以下是QueryBuilder的外观:

'query_builder' => function (ProductRepository $er) use ($customerId) {
    $qb = $er->QBByCustomer($customerId);
    $qb->addSelect('partial p.{id}');
    $qb->addSelect('partial l.{id, name}');
    return $qb;
},
'choice_label' => 'label.name',

您可以显示其中一个查询吗?他们在寻找什么?显示产品实体的代码和映射。我建议如下:使用实体关系上的fetch=“extra_lazy”,使用“,”multiple'=>true,'expanded'=>true”好的,我发现我使用的是链接实体的标签。我将尝试在这里使用部分加载