2013-01-09 6 views
0

Doctrine의 MongoDB ODM 매핑에 맞춤 데이터 유형을 사용하고있는 Symfony 2 환경이 있습니다. 때때로 이것은 예외입니다. 나는 자산을 캐시를 지우거나 설치에 갈 때 가끔 다음과 같은 오류가 나타납니다 이것은 나중에 작업을 모두 성공, 캐시를 삭제 한 후에 항상 내가 콘솔에 발행 다음 명령으로 일어날 것으로 보인다잘못된 유형 오류 때때로 Symfony 2 콘솔

[InvalidArgumentException] 
Invalid type specified "..." 

. Doctrine은 간헐적으로 문제를 찾는 것으로 보이며, 유형을 등록 할 때와 Doctrine이 매핑을 처리 할 때 발생하는 관계와 관련이 있다고 의심합니다.

형식이 boot() 메서드의 일부로 추가되는 경우, 항상 포함되지는 않을 수 있습니다.

  • 여기 무슨 일입니까?
  • 형식을 이전에로드했는지 또는 구성 파일에 제공했는지 어떻게 확인할 수 있습니까? 지금까지 MongoDB 설정을 사용하여 ORM here에 설명 된대로 .yml 파일에 사용자 정의 유형을 지정하는 방법이 없다는 것을 알 수 있습니다.

답변

0

좋은 해결책을 찾았습니다 in this post.

짧은 대답은 MyBundleClass::__consruct()

\Doctrine\ODM\MongoDB\Mapping\Types\Type::registeredType('mytype', 'My\Type\Class'); 

를 추가하는 것입니다. 캐시에 워밍업이 발생하기 전에 등록 된 유형이 표시됩니다.

Type::addType() 대신 Type::registeredType()을 사용하면 유형이 이미 등록되어 있는지 확인하지 않아도됩니다. Type::addType()의 경우 이미 추가 된 경우 예외가 발생합니다.

0

위의 두 가지 질문 중 두 번째 질문에 대답하려면이 문제에 대한 해결 방법을 찾은 것 같지만 많이 좋아하지는 않습니다. 적절한 솔루션보다 해킹과 같은 느낌입니다.

\Doctrine\ODM\MongoDB\Mapping\Types\Type::addType('mytype', 'My\Type\Class'); 

을 ...이 콘솔 명령을 호출 할 때 유형이 등록되어 있는지 확인하기 위해 나타납니다 : app/autoload.php에서

내가 주석 레지스트리 및 드라이버를 등록한 후, 나는 호출합니다.

+0

누군가가 더 나은 해결책을 제시 할 때까지 지금은 대답으로 표시하십시오. –