Змініть доктринне з'єднання у формі класу та Doctrine Fixtures

У мене є певна форма, і в одному стовпці є тип Entity , але цей об'єкт має інше з'єднання.

In action i can $em->getDoctrine()->getEntityManager('name')

Як змінити зв'язок у формі класу?

Можливо, можливо, змінити зв'язок в класі entity. Подобається це

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();
    }

}

але не працював :(

1

2 Відповіді

При завантаженні світильників ви можете використовувати прапор при виконанні команди консолі для зміни менеджера об'єктів:

Виконання світильників

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

Крім того, ви можете ознайомитись із цим розділом у тих самих документах:

Використання контейнера у світильниках

Якщо ваш клас класу має доступ до контейнера, ви можете завантажити будь-який керуючий об'єктом, який ви бажаєте.

$container->get('doctrine')->getEntityManager('manager_name');
0
додано
Справді ... це повинно було більше схоже на $ this-> container-> get ('doctrine') -> getEntityManager ('manager's & nbsp; _name'); як описано в посиланням вище. Це важливий біт, якщо ви хочете зробити це таким чином, ваш пристрій повинен реалізувати ContainerAwareInterface . Передача імені менеджера в командному рядку, швидше за все, є простим методом.
додано Автор Kasheen, джерело
Ага так, тому що вам все одно потрібно призначити повернення менеджеру і використовувати його ... $ manager = $ this-> container-> get ('doctrine') -> getEntityManager ('owner') & zwnj;; , або ви можете виконати звичайні прилади з вказівкою PHP app/console: fixtures: load --em = owner
додано Автор Kasheen, джерело
його $ container-> get ('doctrine') -> getEntityManager ('manager_name' & zwnj;); працювати
додано Автор rtyshyk, джерело
Оновити питання.
додано Автор rtyshyk, джерело

If your fixture has access to container, with your actual config in config.yml : orm: default_entity_manager: defaultenter code here entity_managers: owner: connection: owner mappings: RealestateCoreBundle: Entity: MyEntity

ви можете викликати такого менеджера організації:

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

0
додано