2017-03-29 25 views
0

使用Propel ORM 2.0 Propel \ Runtime \ Collection \ ObjectCollection-> toJSON()返回一个json字符串,其中第一个元素的键名是模型的php名称的复数形式。Propel 2.0禁用或修改多元化

问题是我正在使用一个现有项目,其中约定已经使用复数。因此,在模型“用户”的情况下,第一个元素将作为“用户”返回(带有额外的's')。

例如,这里有一个返回什么是第一位:

"{"Userss":[{"Id":"123",...}]}"

我试过,如文档中描述(修改propel.generator.objectModel.pluralizerClass在propel.ext文件http://propelorm.org/documentation/reference/configuration-file.html)这似乎对生成的配置没有任何影响,也不会改变行为。

我已经中断了StandardEnglishPluralizer代码中的代码,不管在配置中设置了什么,StandardEnglishPluralizer总是被使用的。

有没有办法禁用多元化或创建一个不复数和我们它的多元化?

+0

是否有一个特定的原因,为什么你命名你的模型用户而不是用户?为你的模型命名,并且让推动处理多元化,最终得到更多可读代码。 – chocochaos

回答

1

使用Propel2,您可以创建并使用您自己的多元化器,如果您愿意,它可以使所有复数方法呈现单数。但是,这会导致含糊不清。例如,如果您有一个名为getUsers的模型,您将不知道(没有附加信息)该方法是返回一个集合还是一个实体。

但是,简单的解决方法是简单地将schema元素的phpName属性设置为schema.xml中“Users”表的“User”。