我在Zend Framework中使用了doctrine2。当你构建实体需要设置类的前缀时,例如(Model_User)。可能吗?。我使用的命令是在Doctrine2中生成带有前缀的实体
./doctrine orm:generate-entities --generate-annotations=1 ../../../application/models/
我在Zend Framework中使用了doctrine2。当你构建实体需要设置类的前缀时,例如(Model_User)。可能吗?。我使用的命令是在Doctrine2中生成带有前缀的实体
./doctrine orm:generate-entities --generate-annotations=1 ../../../application/models/
在你的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_"
这些设置适用于Doctrine 1. Aflon在询问Doctrine 2。 – 2011-03-03 21:56:50
我是新来的学说的ORM,但我做到这一点:当您创建实体管理器让这个
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));
}
}
}
下一个:
$tablePrefix = new TablePrefix('tbl_');
$evm = $entityManager->getEventManager();
$evm->addEventListener(\Doctrine\ORM\Events::loadClassMetadata, $tablePrefix);
在文件中添加的顶部
:use \Doctrine\ORM\Event\LoadClassMetadataEventArgs;
当你运行cmd php vendor/bin/doctrine orm时:生成实体模型模型的名字就OK了!
您是否找到任何解决方案? – Developer 2011-03-03 15:57:02