我最近决定尝试Doctrine 2。 我设法将它部分地集成到Zend。命令行工作,我设法询问数据库。 问题来自我的不同实体,代理,......的生成。
之前,使用Doctrine 1.x,我们可以从数据库开始生成YML文件和业务类。
现在,在Doctrine 2中,我们必须从映射文件(YML,XML,......中的元数据)生成实体。但是无法使用Doctrine 2从DB生成文件(我在其上找不到任何内容......)。
所以,我用mysql Workbench创建了DB YML文件。但是这些文件与Doctrine 2不兼容。
幸运的是,doctrine命令有一些实用程序来转换YML。但我得到另一个问题:我没有找到它或帮助它!
也许有人知道Doctrine 2比我更好,可以帮助我吗? 转换时的问题是:
Could not map doctrine 1 type 'float'!
这是YML部分似乎有问题:
tVenue:
tableName: t_venues
columns:
ven_id:
type: integer(4)
primary: true
notnull: true
autoincrement: true
ven_title:
type: string(250)
default: null
ven_adress:
type: clob(65535)
notnull: true
ven_zip:
type: string(10)
notnull: true
cit_id:
type: integer(4)
notnull: true
cit_label:
type: string(150)
notnull: true
ven_lat:
type : float
default: null
ven_long:
type : float
default: null
indexes:
cit_id:
fields: [cit_id]
options:
charset: utf8
collate: utf8_unicode_ci
我检查这个声明是Doctrine 1的标准。
有人有想法吗? 感谢。
答案 0 :(得分:1)
对于浮动问题:
尝试decimal
代替float
,它会映射到PHP双倍。
答案 1 :(得分:0)
我已经实现了从数据库生成实体的新命令,请检查https://github.com/umpirsky/doctrine2/blob/master/lib/Doctrine/ORM/Tools/Console/Command/GenerateEntitiesDbCommand.php
只需将其添加为:
$cli->addCommands(array(
// DBAL Commands
new \Doctrine\DBAL\Tools\Console\Command\RunSqlCommand(),
new \Doctrine\DBAL\Tools\Console\Command\ImportCommand(),
// ORM Commands
new \Doctrine\ORM\Tools\Console\Command\ClearCache\MetadataCommand(),
new \Doctrine\ORM\Tools\Console\Command\ClearCache\ResultCommand(),
new \Doctrine\ORM\Tools\Console\Command\ClearCache\QueryCommand(),
new \Doctrine\ORM\Tools\Console\Command\SchemaTool\CreateCommand(),
new \Doctrine\ORM\Tools\Console\Command\SchemaTool\UpdateCommand(),
new \Doctrine\ORM\Tools\Console\Command\SchemaTool\DropCommand(),
new \Doctrine\ORM\Tools\Console\Command\EnsureProductionSettingsCommand(),
new \Doctrine\ORM\Tools\Console\Command\ConvertDoctrine1SchemaCommand(),
new \Doctrine\ORM\Tools\Console\Command\GenerateRepositoriesCommand(),
new \Doctrine\ORM\Tools\Console\Command\GenerateEntitiesCommand(),
new \Doctrine\ORM\Tools\Console\Command\GenerateEntitiesDbCommand(),
new \Doctrine\ORM\Tools\Console\Command\GenerateProxiesCommand(),
new \Doctrine\ORM\Tools\Console\Command\ConvertMappingCommand(),
new \Doctrine\ORM\Tools\Console\Command\RunDqlCommand(),
new \Doctrine\ORM\Tools\Console\Command\ValidateSchemaCommand(),
));
答案 2 :(得分:0)
您还可以使用Skipper作为从可视模型生成Yaml / Xml / Annotations的替代方法。
它完全支持Doctrine2,因此生成的模式文件可以随时使用,作为奖励,您可以直接在可视化模型中编辑ORM特定属性。您需要做的就是用一个工具处理。