2011-01-30 5 views
3

젠드 프레임 워크 1.10에서 Doctrine 2를 설정하고 application.ini의 모든 필수 구성 설정을 포함하여 모든 자동로드를 올바르게 설정했습니다. 지금해야 할 일은 엔티티 관리자가 내 데이터베이스에서 작업 할 수 있도록 매핑 정보로 내 Entity 클래스를 만드는 것입니다.기존 데이터베이스 사용에 대한 매핑 정보 생성 Doctrine 2

엔티티 클래스를 수작업으로 작성하는 것은 나이가 들기 때문에 작성해야하지만 다음에 수행 할 작업을 해결할 수는 없습니다. 명령 줄 도구에는 기존 스키마에서 엔터티, 프록시 및 기타 필요한 모든 클래스를 만드는 기능이 있습니까?

+0

이제는 기존 데이터베이스에 대한 yaml 매핑을 생성 할 수 있었으며 이제는 orm : generate-entities .. \ library \ Application \ Entity를 사용하려고 할 때 APPLICATION_PATH "/ data/yaml"에 배치됩니다. yaml 매핑에서 엔터티 클래스를 생성하면 "No metadata classes to process"메시지가 나타나며 실패합니다. – Kevin

+1

"메타 데이터 클래스 없음"오류의 원인을 파악할 수 있었습니까? 나는 PHP 기반 어노테이션으로 "newDefaultAnnotationDriver"를 사용하지 않는 한 YAML/XML을 사용하여 매핑을 생성 할 수있다. 그것은 나를 미치게하고있다! –

답변

3

명령 행 도구를 사용하여 :

./bin/doctrine orm:convert-mapping --from-database xml ./bin/tmp 

이 당신의 XML 매핑을 생성합니다. 그런 다음, 교리 CLI 도구를 구성 할 때 내 CLI 구성 Zend_Application를 사용하는 XmlDriver

$driver = new \Doctrine\ORM\Mapping\Driver\XmlDriver(array(
    APPLICATION_PATH . '/../bin/tmp'    
)); 
$config->setMetadataDriverImpl($driver); 

에 드라이버를 변경할 수 있도록, 그래서 나는 보통 내 부트 스트랩이 변화하고있다.

지금 XML 메타 데이터 드라이버는 엔티티 XML로 변환하는 orm:generate-entities 위해 필요

./bin/doctrine orm:generate-entities ./bin/tmp 

실행됩니다. Default Annotation Driver를 사용하면 주석 드라이버 경로의 엔티티가 여기에서 원하는 것과 다른 엔티티로 변환됩니다.

+0

Zend 2 (물론 실제로는 다른 방법)에서는 vendor/doctrine/doctrine-module/bin/doctrine-module.php 파일을 업데이트하고 마지막 두 줄 앞에 다음을 추가해야합니다. '$ driverImpl = 새로운 \ 교리 \ ORM \ 매핑 \ 드라이버 \의 XmlDriver ( \t \t 배열 ('./ 빈/tmp를'));' '/ * @var의 $ 엠 \ 교리의 \의 ORM \ EntityManager의 * /' ' $ em-> getConfiguration() -> setMetadataDriverImpl ($ driverImpl);'$ em-> getServiceManager() -> get ('doctrine.entitymanager.orm_default'); – bstricks

관련 문제