2011-10-27 69 views
1

我有一些表格,一列有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(); 
    } 

} 

但沒有工作:(

回答

0

當裝入燈具就可以執行控制檯命令時,改變實體管理器使用的標誌:

Executing Fixtures

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

或者,您可以在第Ë同一個文檔:

Using the container in fixtures

如果您的夾具類具有訪問容器,那麼你可以加載任何你想要的實體管理器。

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

其 '$ container-> get('doctrine') - > getEntityManager('manager_name');' doest work – rtyshyk

+0

True ...它應該更像'$ this-> container-> get('doctrine') - > getEntityManager('manager_name');'只要你的夾具是容器感知的,上面的鏈接。如果你希望這樣做,這是非常重要的,你的燈具必須實現'ContainerAwareInterface'。雖然在命令行上傳遞經理的名字可能是一個更簡單的方法。 – Kasheen

+0

更新問題。 – rtyshyk

0

如果您的燈具訪問容器,使用您的實際配置在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');