Symfony2 Doctrine ORM Manager с именем «клиент» не существует

1

Привет, я рассмотрел пример использования двух разных подключений к базе данных из документации Symfony2: Документация по многочисленным подключениям Symfony2. Однако Symfony не находит диспетчера сущностей заказчика. (Параметры определены правильно)

doctrine:
dbal:
    default_connection: default
    connections:
        default:
            driver:   "%database_driver%"
            host:     "%database_host%"
            port:     "%database_port%"
            dbname:   "%database_name%"
            user:     "%database_user%"
            password: "%database_password%"
            charset:  UTF8
        customer:
            driver:   "%database_driver%"
            host:     "%database_host2%"
            port:     "%database_port2%"
            dbname:   "%database_name2%"
            user:     "%database_user2%"
            password: "%database_password2%"
            charset:  UTF8

orm:
    default_entity_manager: default
    entity_managers:
        default:
            connection: default
            mappings:
                AppBundle:  ~
        customer:
            connection: customer
            mappings:
                AppBundle: ~

Контроллер выглядит так:

class DefaultController extends Controller
{
/**
 * @Route("/", name="homepage")
 */
public function indexAction(Request $request)
{
    $em = $this->get('doctrine')->getManager();
    $em = $this->get('doctrine')->getManager('default');
    $em = $this->get('doctrine.orm.default_entity_manager');

    // Both of these return the "customer" entity manager
    $customerEm = $this->get('doctrine')->getManager('customer');
    $customerEm = $this->get('doctrine.orm.customer_entity_manager');
    return $this->render('default/index.html.twig', array(
        'base_dir' => realpath($this->container->getParameter('kernel.root_dir').'/..'),
    ));
}

Я должен получить диспетчер сущности заказчика, но, тем не менее, Symfony выбрасывает недопустимое исключение аргумента в сообщении.

[2015-10-19 23:19:18] request.CRITICAL: Uncaught PHP Exception 
InvalidArgumentException: "Doctrine ORM Manager named "customer" does 
not exist." at /srv/www/htdocs/symfony/my_project_name/app/cache
/prod/classes.php line 7344 {"exception":"[object] 
(InvalidArgumentException(code: 0): Doctrine ORM Manager named 
\"customer\" does not exist. at /srv/www/htdocs/symfony/my_project_name
/app/cache/prod/classes.php:7344)"} []

Я очистил кеш с помощью кеша приложений/консоли: ясно, но это не помогает.

  • 2
    cache:clear очищает среду dev по умолчанию, но, просматривая журнал ошибок, вы получаете сообщение об ошибке в вашей среде prod . Чтобы очистить кеш в производственной среде, добавьте флаг -e prod , например, такой cache:clear -e prod и обновите страницу.
Теги:
doctrine
doctrine2

2 ответа

1
Лучший ответ

Артамиэль имел правильный ответ в комментарии:

Symfony2 Doctrine ORM Manager с именем "клиент" не существует

cache: clear очищает среду dev по умолчанию, но, глядя на ваш журнал ошибок, вы получаете ошибку в своей среде prod. Чтобы очистить кеш в рабочей среде, добавьте флаг -e prod, как этот кеш: очистите -e prod и обновите страницу.

0

Во-первых, я думаю, достаточно одного объявления менеджера сущностей в вашем контроллере:

/ *** /   
public function indexAction(Request $request)
{
    $em = $this->get('doctrine')->getManager('default');

    $customerEm = $this->get('doctrine')->getManager('customer');

    / *** /
}

Во-вторых, уверены ли вы, что вы можете объявить один и тот же пакет в конфигурации сопоставления (AppBundle: ~ в этом случае)?

  • 0
    Да, это работает, я должен очистить кэш продуктов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню