2011-01-30 11 views
3

私はDoctrine 2をZend Framework 1.10でセットアップし、application.iniのすべての必要な設定を含めてすべての自動ロードを正しく設定しました。私が今やっておく必要があるのは、マッピング情報を使ってエンティティクラスを作成して、エンティティマネージャが自分のデータベースで作業できるようにすることです。既存のデータベースのマッピング情報を生成するDoctrine 2

エンティティクラスは手作業で記述しますが、これは時間がかかりますが、次に何をするのか分かりません。コマンドラインツールには、既存のスキーマからエンティティ、プロキシ、その他の必要なすべてのクラスを作成する機能がありますか?

+0

これで、既存のデータベースのyamlマッピングが生成され、APPLICATION_PATH "/ data/yaml"に配置されました。これで、orm:generate-entities .. \ library \ Application \ Entityを使用しようとすると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ツールを設定するときにXmlDriver

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

にドライバを変更してください私のCLI構成はZend_Applicationを使用していますので、私は通常私のブートストラップでこれを変更しています。

は今実行

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

XMLメタデータ・ドライバはorm:generate-entitiesがエンティティにXMLから変換するために必要です。 Default Annotation Driverを使用すると、アノテーションドライバパスのエンティティが、ここで必要としないエンティティに変換されます。

+0

Zend 2(まあまあの別の方法)では、vendor/doctrine/doctrine-module/bin/doctrine-module.phpファイルを更新し、最後の2行の前に次の行を追加する必要があります: '$ driverImpl =新しい\教義\ ORM \マッピング\ドライバ\のXmlDriver( \t \t配列( './ binに/ tmpに')); ' 教義\ ORM \のEntityManager * /' '\'/* @varます$ EM $ em-> getConfiguration() - > setMetadataDriverImpl($ driverImpl); '$ em => getServiceManager() - > get( 'doctrine.entitymanager.orm_default');' – bstricks

関連する問題