2011-01-06 6 views
1

私はdoctrine2をZend Frameworkで使用しています。構築するときに、エンティティはクラスの接頭辞を設定する必要があります(たとえば、Model_User)。出来ますか?。私が使用するコマンドは、Doctrine2にプレフィックスを持つエンティティを生成する

./doctrine orm:generate-entities --generate-annotations=1 ../../../application/models/ 
+0

解決策は見つかりましたか? – Developer

答えて

-1

これらの行をapplication.iniファイルに追加してください。

doctrine.generate_models_options.pearStyle = true 
doctrine.generate_models_options.generateTableClasses = false 
doctrine.generate_models_options.generateBaseClasses = true 
doctrine.generate_models_options.baseClassPrefix = "Base_" 
doctrine.generate_models_options.baseClassesDirectory = 
doctrine.generate_models_options.classPrefixFiles = false 
doctrine.generate_models_options.classPrefix = "ModuleName_Model_" 
+1

これらの設定はDoctrine 1用です。AflonはDoctrine 2について質問しています。 –

1

私はDoctrineのORMに新しいですが、私は、この作られた:ファイルのアドオンの上に

$tablePrefix = new TablePrefix('tbl_'); 
    $evm = $entityManager->getEventManager(); 
    $evm->addEventListener(\Doctrine\ORM\Events::loadClassMetadata, $tablePrefix); 

use \Doctrine\ORM\Event\LoadClassMetadataEventArgs;

あなたは、エンティティ・マネージャがこの作る作成するときに、次

class TablePrefix{ 

    protected $prefix = ''; 

    public function __construct($prefix){ 
     $this->prefix = ''; 

     for($i = 0; $i < strlen($prefix); $i++){ // table prefix like in entity name 
      if($prefix[$i] == '_' && $i-1 > 0){ 
       $prefix[$i-1] = strtoupper($prefix[$i-1]); 
      } 
      else{ 
       $this->prefix .= $prefix[$i]; 
      } 
     } 

     $this->prefix[0] = strtoupper($this->prefix[0]); 
    } 

    public function loadClassMetadata(LoadClassMetadataEventArgs $eventArgs){ 

     $classMetadata = $eventArgs->getClassMetadata(); 

     $tmp = substr($classMetadata->name, 0, strlen($this->prefix)); 

     if($tmp == $this->prefix){ 
      $classMetadata->name = substr($classMetadata->name, strlen($this->prefix)); 
     } 
    } 
} 

cmdを実行すると、ベンダー/ bin/doctrine orm:generate-entitiesモデルのモデル名はokになります!

関連する問題