2017-03-29 30 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」。