Symfony:从另一个数据库加载表单 EntityType

Symfony: Form EntityType loading from another database

Symfony 4.x 项目使用具有多个数据库连接的学说。 我在一个数据库中有 Customers,在另一个数据库中有 Locations。 我有一个 CustomerForm,我用它来输入和编辑有关客户的信息,包括位置。我需要在 select 列表中构建表单中的位置列表,因此我有一个定义,例如:

<?php

namespace App\Form;

use App\Entity\Lobbytrack\Location;
use App\Repository\Lobbytrack\LocationRepository;
use Doctrine\ORM\EntityRepository;

class CustomerForm extends AbstractType
{
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
         ...

          $builder
            ->add('location', EntityType::class, [
                'label' => 'Location',
                'class' => Location::class,
                'query_builder' => function (EntityRepository $er) {
                    return $er->createQueryBuilder('l')
                        ->where('l.isActive = 1')
                        ->orderBy('l.order',' ASC');
                },
            ])

          ...
}

/**
 * {@inheritdoc}
 */
public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'App\Entity\Customer'
    ));
}

当我尝试加载表单时,出现错误:

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'smc.location' doesn't exist

所以看起来它使用的是我的默认数据库连接,而不是包含位置的连接,即使我已经包含了正确的位置 class 和存储库。

如何让这个查询使用正确的连接?
还是有另一种方法来构建此列表?

为 formBuilder 指定 'em' 选项:

          $builder
        ->add('location', EntityType::class, [
            'label' => 'Location',
            'class' => Location::class,
            'em'  => 'custom_1'
            'query_builder' => function (EntityRepository $er) {
                return $er->createQueryBuilder('l')
                    ->where('l.isActive = 1')
                    ->orderBy('l.order',' ASC');
            },
        ])

config/packages/doctrine.yaml:

    dbal:
 #        url: '%env(DATABASE_URL)%'
        default_connection: default
        connections:
            default:
                driver: pdo_pgsql
                driver_class: App\Doctrine\DBAL\Driver\CustomPostgreSQLDriver
                host: '%env(DATABASE_HOST)%' 
                port: '%env(DATABASE_PORT)%' 
                dbname: '%env(DATABASE_NAME)%' 
                user: '%env(DATABASE_USER)%' 
                password: '%env(DATABASE_PASSWORD)%' 
                charset: UTF8
            custom_1:
                driver: pdo_pgsql
                ...

另一种选择是提供 'em' 实例而不仅仅是字符串名称。