Измените связь доктрины на классе формы и приспособлениях Доктрины - PullRequest
1 голос
/ 27 октября 2011

У меня есть какая-то форма, и один столбец имеет тип Entity, но у этой сущности есть другое соединение.

В действии я могу $em->getDoctrine()->getEntityManager('name')

Как изменить соединение в классе формы?

Может быть, может изменить соединение в классе сущности. Как это

orm:
    default_entity_manager: default
    entity_managers:
        owner:
            connection: owner
            mappings:
                RealestateCoreBundle:
                    Entity: MyEntity

ОБНОВЛЕНИЕ:

Я нашел ответ здесь:)

http://symfony.com/doc/2.0/reference/forms/types/entity.html#em

Но как я могу изменить соединение в классе данных?

Я пытаюсь:

<?php

namespace Realestate\CoreBundle\DataFixtures\ORM;

use Doctrine\Common\DataFixtures\FixtureInterface;
use Realestate\CoreBundle\Entity\Owner;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;

class OwnerFixtures implements FixtureInterface, ContainerAwareInterface
{

    private $container;

    public function setContainer(ContainerInterface $container = null)
    {
        $this->container = $container;
    }

    public function load($manager)
    {
        $this->container->get('doctrine')->getEntityManager('owner');

        for ($i = 0; $i < 100; $i++) {
            $owner = new Owner();
            $owner->setName('name-' . $i);
            $owner->setTelephone(mt_rand(100000, 999999));
            $manager->persist($owner);
        }

        $manager->flush();
    }

}

но не сработало: (

Ответы [ 2 ]

0 голосов
/ 19 ноября 2017

Если у вашего прибора есть доступ к контейнеру, с вашим текущим конфигом в config.yml: orm: default_entity_manager: default введите код здесь entity_managers: owner: connection: owner mappings: RealestateCoreBundle: Entity: MyEntity

, вы можете вызвать менеджер сущностей следующим образом:

$manager = $this->container->get('doctrine.orm.owner_entity_manager');

0 голосов
/ 28 октября 2011

При загрузке приборов вы можете использовать флаг при выполнении консольной команды для изменения менеджера сущностей:

Исполняющие команды

php app/console doctrine:fixtures:load --em=manager_name

В качестве альтернативы вы можете проверить этот раздел в тех же документах:

Использование контейнера в светильниках

Если у вашего класса фикстур есть доступ к контейнеру, вы можете загрузить любой менеджер сущностей, какой пожелаете.

$container->get('doctrine')->getEntityManager('manager_name');
...