我正在使用(第一次)推进1.7和随安装提供的propel-gen shell脚本。 schema.xml是使用propel-gen reverse
从现有数据库生成的,然后使用propel-gen om
生成类。
我的数据库结构以这样的方式构建,即它在单独的表中提供各种数据的翻译,具有一对多的关系。 这是一个例子:
TABLE 'buildings'
'id' int(10) unsigned NOT NULL AUTO_INCREMENT,
'address' varchar(255) NOT NULL,
TABLE 'building_description_translations'
'building_id' int(10) unsigned NOT NULL,
'lang' varchar(2) NOT NULL,
'description' varchar(1023) NOT NULL,
building_description_translations.building_id
有buildings.id
的外键。此外,building_description_translations
的主键位于building_id
和lang
列之上。
到目前为止,推进生成器就像魅力一样,除了用于从关系访问相关对象的方法名称最终被复数两次:
// file build/classes/myproject/om/BaseBuildings
class BaseBuildings{
//...
// note the TranslationSS
public function getBuildingDescriptionTranslationss($criteria = null, PropelPDO $con = null)
{
//...
}
}
另外,我的build.properties文件看起来像(除了数据库配置):
propel.builder.pluralizer.class = builder.util.StandardEnglishPluralizer
propel.samePhpName = true
propel.addVendorInfo = true
有没有办法控制这种双重复数,而不会干扰现有的数据库模式?我已经找到了答案,但我找不到与这种情况相关的任何内容。
答案 0 :(得分:0)
我明白了 - 最简单的方法是创建一个适合我需要的自定义Pluralizer类,基于原来的
generator\lib\builder\util\StandardEnglishPluralizer.php
让我们说新的Pluralizer是
generator\lib\builder\util\MyEnglishPluralizer.php
在build.properties
中,需要对多元化配置进行相应的修改。
propel.builder.pluralizer.class = builder.util.MyEnglishPluralizer
然后,使用propel-gen om
在我的情况下,我只需要在$_plural
属性
protected $_plural = array(
// ...
'ons' => 'ons'
);
注意:我已经使用了推进式安装提供的propel-gen
脚本,而不是PEAR包中提供的脚本。