Доктрина қосылымын пішін сыныбында және Доктриналық қосымшаларда өзгертіңіз

Менде бір пішін бар және бір бағанда Entity типі бар, бірақ бұл нысанның басқа байланысы бар.

In action i can $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();
    }

}

бірақ жұмыс істемеді :(

1

2 жауаптар

Құрамаларды жүктегенде, басқарушыны өзгерту үшін консольді орындау кезінде жалаушаны қолдануға болады:

Жарықтандыруды орындау

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

Сонымен қатар, осы бөлімді бірдей құжаттармен қарап шығыңыз:

Контейнерді арматураларда пайдалану

Егер сіздің контекстің класы контейнерге қол жеткізсе, сіз қалаған кез-келген менеджерді жүктей аласыз.

$container->get('doctrine')->getEntityManager('manager_name');
0
қосылды
Шын мәнінде, сіздің контекстің контейнер екенін білу үшін, ол $ this-> container-> get ('doctrine') -> getEntityManager ('manager & zwnj; _name'); Жоғарыдағы сілтемеде сипатталғандай. Егер сіз мұны осылай жасағыңыз келсе, бұл маңызды бит болады, сіздің арматура ContainerAwareInterface енгізуі керек. Пәрмен жолында менеджердің атын өту оңайырақ болса керек.
қосылды автор Kasheen, көзі
О, иә, өйткені әлі де менеджерге қайтаруды және оны пайдалануды қажет етеді ... $ manager = $ this-> container-> get ('doctrine') -> getEntityManager ('owner') & zwnj ;; немесе сіз PHP app/console doktrin: fixtures: load --em = иесінің
қосылды автор 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
қосылды