2016-09-17 2 views
1

나는 기존 데이터베이스의 테이블에서 엔티티를 만들려고 :Symfony3 여러 엔티티 관리자와 연결

php bin/console doctrine:mapping:import --force AppBundle yml --filter="someTable" 

그러나 메시지가 나타 없습니다 나타났다 :

표 someTable 더있다 기본 키. Doctrine은 기본 키가없는 테이블에서 역 공학 엔지니어링을 지원하지 않습니다.

내가 확인하고 DB에서 PK가없는 테이블이 있었는데 (나는 변경할 수 없다). 그래서 나는이 페이지를 읽어 http://symfony.com/doc/current/doctrine/multiple_entity_managers.html 을 ... 그리고 GitHub의에이 솔루션을 시도 : https://github.com/doctrine/DoctrineBundle/issues/441

내 config.yml는 다음과 같이이다 :

doctrine: 
    dbal: 
     default_connection: default 
     connections: 
      default: 
       driver: pdo_mysql 
       host:  "%database_host%" 
       port:  "%database_port%" 
       dbname: "%database_name%" 
       user:  "%database_user%" 
       password: "%database_password%" 
       charset: UTF8 
       mapping_types: 
        enum: string 
      forMapping: 
       driver: pdo_mysql 
       host:  "%database_host%" 
       port:  "%database_port%" 
       dbname: "%database_name%" 
       user:  "%database_user%" 
       password: "%database_password%" 
       charset: UTF8 
       schema_filter: someTable 

    orm: 
     auto_generate_proxy_classes: "%kernel.debug%" 
     naming_strategy: doctrine.orm.naming_strategy.underscore 
     auto_mapping: true 
     default_entity_manager: default 
     entity_managers: 
      default: 
       connection: default 
       mappings: 
        AppBundle: 
         type: yml 
         dir: Resources/config 
      forMapping: 
       connection: forMapping 
       mappings: 
        AppBundle: 
         type: yml 
         dir: Resources/config 

을하지만 내가하려고하면

php bin/console doctrine:mapping:import --em=forMapping --filter="someTable" AppBundle yml 

다음과 같이 표시됩니다.

[InvalidArgumentException] "forMapping"이라는 Doctrine ORM 관리자가 존재하지 않습니다.

캐시를 비우지 않지만. 어떤 도움을 주셔서 감사합니다.

엠씨

+0

auto_mapping 줄을 제거하십시오. – Cerad

답변

1

죄송합니다. 이전 답변을 남겨 두었습니다. 방법에 대해 당신이 대신 같은 명령을 다시 시도 :

php bin/console doctrine:mapping:import "AppBundle" yml --em=forMapping --filter="someTable" 

는이 달라 지나요? --help를 사용하는 커맨드 라인에서 볼 때, 그 순서대로 보여줍니다.

그것은 당신의 "forMapping"과 같은
+1

흥미로운 제안. 엔티티가 가져 오기 명령을 사용하여 생성되고 가져 오기 명령이 실행 중이 지 않다면 이러한 존재하지 않는 엔티티를 얼마나 정확하게 확인할 것입니까? 왜 yaml 매핑 옵션을 사용할 때 주석이 있을까요? – Cerad

+0

나는 단지 내가 어리 석다는 것을 깨달았다. @Cerad 힌트 주셔서 감사합니다! –

0

는 [해결]은 "auto_mapping"때문 무슨 일이 일어나고 있는지 알아

orm: 
    entity_managers: 
     #problem here 
     forMapping: 

시도에 올바르지 않습니다. 올바른 순서는 다음과 같습니다.

orm: 
    default_entity_manager: default 
    entity_managers: 
     auto_mapping: true 
     default: 
      connection: default 
      mappings: 
       AppBundle: 
        type: yml 
        dir: Resources/config 
     # See https://github.com/doctrine/DoctrineBundle/issues/441 
     forMapping: 
      connection: forMapping 
      mappings: 
       AppBundle: 
        type: yml 
        dir: Resources/config 

다음 오류 메시지가 나타날 때까지 한 단계 더 진행됩니다. 내가하려고하면 :

PHP 빈/콘솔 교리 : 매핑 : 수입 "AppBundle"YML --em = forMapping이

다음과 같은 오류 메시지가 팝업 :

[심포니 \ 구성 요소 \ 디버그 \를 예외 \의 ContextErrorException]
경고 :는 preg_match는() : 구분 기호의이에 보자,

확인 영숫자 또는 백 슬래시가 아니어야합니다. schema_filter가 잘못되었습니다.올바른 코드 :

schema_filter: ~^spip_rubriques$~ 

내 엔티티가 올바르게 생성되었습니다. 도와 주셔서 감사합니다.

MC

+0

그래서'doctrine : mapping : import' 옵션의 순서가 중요합니까? 내 대답에 위의 삼각형을 클릭하여 도움을받을 수 있습니까? –

관련 문제