2012-03-19 4 views
0

私はORMの世界で初めてで、zctプロジェクトとdoctrine 2を統合しました。私は教義の文書やさまざまな記事を読んでそれを統合しました:)doctrine 2の既存のデータベースからxmlまたはyamlマッパーを自動的に生成する方法はありますが、cliは使用しません。

私はマッパーとエンティティを生成するための既存のDBを持っています。私は既定の注釈の代わりにXML/YAMLマッパーを使用するつもりです。

私はどこでも見るすべてのCLI「(教義公式ドキュメントで提供)doctrine.php」binディレクトリに以下のコマンドを実行して、マッパーとエンティティを生成するコマンドされたファイルが存在します。

  *php doctrine orm:convert-mapping --from-database xml /path/to/mappers* 

は、エンティティ/モデルクラスを生成するには:

はマッパーを生成するには

  *./doctrine orm:generate-entities /path/to/models/or/entities* 

しかし、私はコマンドを実行し、マッパー/エンティティを生成したいいけません。私はそれを私のために行うPHPスクリプトを探しています(、コントローラのアクションメソッドを呼び出すことによって:Exdo:www.doctrineproj.com/admin/mdoels/autogenerate/)。

CLIスクリプトを実行する代わりに、APIクラスまたはphpコードでこれを行う方法がありますか。エンティティを生成するにはdoctrine_core :: generateMappers(DBPARAMS、mapperDriver)

:doctrine_core :: generateEntities(メタデータ)

OR

はマッパーを生成したいと

を呼び出すことによって行うことができます

は、呼び出しのようなシステムを使ってPHPスクリプトファイルからすべてのCLIコマンドを実行する方法はありますか?

上記のcliコマンドを使用してexec()とsystem()を試してみました。しかし、それは:(うまく機能していません。

ここに私のアクションメソッドから、私はマッパを生成するために使用されるコード

パブリック関数autogenerateAction(){

 $result = array(); 
    //change the current working DIR to bin 
    $cliPath = "cd ". APPLICATION_PATH . "/bin"; 
    exec($cliPath,$result); 

    //construct the CMD to generate the XML files from the DB tables 
    $mapperDir = APPLICATION_PATH. "/models/entities/xml-mapper/"; 
    $mapperType = "xml"; 

    $generateMappersCmd = "php doctrine orm:convert-mapping --from-database " . $mapperType . ' ' . $mapperDir ; 

    //execute the CMD 
    $result = system($generateMappersCmd); 

}

です

しかし、上記のコードでは、目的のディレクトリにマッパーを作成していません。

マッパーとエンティティを自動生成する最適なソリューションを教えてくださいDBは自動化されたPHPスクリプトを使用しています。

お探しの方には最適です。

おかげラジ

答えて

0

は、(コントローラのいくつかの方法で)次の試し:

$kernel = $this->get('kernel'); 
$application = new \Symfony\Bundle\FrameworkBundle\Console\Application($kernel); 
$application->setAutoExit(false); 

$options = array(
    'command' => 'doctrine:generate:entity', 
    '--entity' => "SomeDemoBundle:YourEntityName", 
    '--fields' => "name:string(255) price:float description:text", 
    '--with-repository' => true, 
    '--format' => 'xml', 
); 

$fp = tmpfile(); 
$out = new StreamOutput($fp); 
$in = new \Symfony\Component\Console\Input\ArrayInput($options); 
$in->setInteractive(false); 
$application->run($in, $out);