[Symfony] 2009-07-17 15:20 我来说两句  

在MySQL Workbench中使用DoctrineExpor引起的问题

DoctrineExpor(MySQL Workbench Doctrine Export Plugin)是一个在Workbench中使用的插件,它可以把现有的Data模型导出为Doctrine兼容的schema(YAML)格式。

原程序的下载地址为:DoctrineExpor

我下载使用的版本为0.3,此版本有一个小小的问题:
当Workbench中设计的Column类型为INT的时候,它导出的schema所对应的类型同样为INT,而这个类型却不被Symfony中的doctrine所认识。
其异常表现为:当你新增一个记录,然后save()的时候,就会出现以下提示

Validation failed in class article
1 field had validation error:
* 2 validators failed on ac_author (type, length)

打开doctrine所产生的原程序Basexxxxx.class.php来看,发现
$this->hasColumn('ac_author', 'int', null, array('type' => 'int'));
看样子,是产生的数据类型不对引起的。

再打开schema.yml,发现其类型为
ac_author:
type: int <---,此处应该为integer(4),才适合doctrine 於是,动手改DoctrineExport.grt.lua这个插件原程序。

-- + [fix] data type conversion
-- INT -> integer(4)
-- + [add] data type conversion
-- LONGTEXT -> clob

最后,复盖原程序就可以了。
另外,别忘了,原程序存放的位置为以下类似,别找不到了。
C:\Documents and Settings\你的用户名\Application Data\MySQL\Workbench\modules

 修正后的DoctrineExport.grt.lua