2014-05-23 22 views
7

Ho installato un nuovo progetto con più gestori di entità, quando provo a caricare i dispositivi di dati ottengo un MappingException mentre la console prova a caricare i Fixtures per tutto invece che il gestore di entità che ho specificato.Come utilizzare la dottrina di Symfony: fixtures: caricare con più gestori di entità?

Qui è la sezione dottrina dal mio config.yml

doctrine: 
    dbal: 
     connections: 
      default: 
       driver: %database_driver% 
       host:  %database_host% 
       port:  %database_port% 
       dbname: %database_name% 
       user:  %database_user% 
       password: %database_password% 
       charset: %database_charset% 
      symblog: 
       driver: %database_driver_blog% 
       host:  %database_host_blog% 
       port:  %database_port_blog% 
       dbname: %database_name_blog% 
       user:  %database_user_blog% 
       password: %database_password_blog% 
       charset: %database_charset_blog% 

    orm: 
     auto_generate_proxy_classes: %kernel.debug% 
     entity_managers: 
      default: 
       connection: default 
       mappings: 
        IncompassAuthBundle: ~ 
        IncompassUserBundle: ~ 
        IncompassApiBundle: ~ 
        IncompassSurgeryBundle: ~ 
        IncompassVendorBundle: ~ 
        IncompassHospitalBundle: ~ 
       dql: 
        datetime_functions: 
         date: Mapado\MysqlDoctrineFunctions\DQL\MysqlDate 
      symblog: 
       connection: symblog 
       mappings: 
        IncompassBlogBundle: ~ 
       dql: 
        datetime_functions: 
         date: Mapado\MysqlDoctrineFunctions\DQL\MysqlDate 

Come potete vedere ho installato una connessione e l'entità responsabile separata per la roba esercitazione symblog.

Quando provo

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

ottengo questo

Careful, database will be purged. Do you want to continue Y/N ?Y 
    > purging database 
    > loading [1] Incompass\BlogBundle\DataFixtures\ORM\BlogFixtures 

    [Doctrine\Common\Persistence\Mapping\MappingException]                            
    The class 'Incompass\BlogBundle\Entity\Blog' was not found in the chain configured namespaces Incompass\AuthBundle\Entity, Incompass\UserBundle\Entity, Incompass\ 
    SurgeryBundle\Entity, Incompass\VendorBundle\Entity, Incompass\HospitalBundle\Entity, FOS\UserBundle\Model               

doctrine:fixtures:load [--fixtures[="..."]] [--append] [--em="..."] [--purge-with-truncate] 

Quando provo

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

ottengo

Careful, database will be purged. Do you want to continue Y/N ?Y 
    > purging database 
    > loading [1] Incompass\BlogBundle\DataFixtures\ORM\BlogFixtures 
    > loading [1] Incompass\SurgeryBundle\DataFixtures\ORM\SurgeryStatusFixtures 

    [Doctrine\Common\Persistence\Mapping\MappingException]                     
    The class 'Incompass\SurgeryBundle\Entity\SurgeryStatus' was not found in the chain configured namespaces Incompass\BlogBundle\Entity 

doctrine:fixtures:load [--fixtures[="..."]] [--append] [--em="..."] [--purge-with-truncate] 

Quindi il comando della console sembra ignorare l'opzione "--em = foobar" e sta tentando di caricare tutti i dispositivi di dati trovati.

Come posso ottenere doctrine: fixtures: carico per utilizzare solo il gestore entità specificato?

+1

Non credo che sta andando filtrare i dispositivi dal gestore dell'entità fornito. Quello che dovresti fare è specificare il percorso '--fixtures' – Phil

risposta

7

Dopo Phils commento mi sono trasferito tutti i miei Fixtures in un FixturesBundle e fatto questo

php app/console doctrine:fixtures:load --fixtures=src/Incompass/FixturesBundle/DataFixtures/ORM 

Per le Fixtures sul blog ho avuto anche specificare il gestore di entità

php app/console doctrine:fixtures:load --fixtures=src/Incompass/BlogBundle/DataFixtures/ORM --em=symblog