2017-03-29 3 views
0

Verwenden von Propel ORM 2.0 Propel \ Runtime \ Collection \ ObjectCollection-> toJSON() gibt eine JSON-Zeichenfolge zurück, wobei das erste Element einen Schlüssel hat, der eine pluralisierte Version des PHP-Namens des Modells ist.Propel 2.0 Deaktivieren oder Ändern der Pluralisierung

Das Problem ist, dass ich mit einem bestehenden Projekt bin zu arbeiten, wo die Plural Konventionen bereits verwenden. Im Fall des Modells "Benutzer" wird also dieses erste Element als "Benutzer" (mit einem Extra "s") zurückgegeben.

Zum Beispiel, hier ist das erste Bit von dem, was zurückgegeben wird:

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

Ich habe versucht, die propel.generator.objectModel.pluralizerClass in der propel.ext-Datei ändern, wie in der Dokumentation beschrieben (http://propelorm.org/documentation/reference/configuration-file.html) Dies scheint weder Auswirkungen auf die generierte Konfiguration noch auf das Verhalten zu haben.

Ich habe den Code in dem StandardEnglishPluralizer Code unterbrochen und egal, was in der Config immer die StandardEnglishPluralizer sind gesetzt wird, was verwendet wird.

Gibt es eine Möglichkeit Pluralisierung zu deaktivieren oder einen pluralizer erstellen, die nicht und wir es nicht pluralize?

+0

Gibt es einen bestimmten Grund, warum Sie Ihr Modell Benutzer und nicht Benutzer nennen? Singuläre Namen für Ihre Modelle zu haben und Propeller mit der Pluralisierung umgehen zu lassen, führt am Ende zu deutlich besser lesbarem Code. – chocochaos

Antwort

1

Mit Propel2, können Sie erstellen und Ihre eigenen pluralizer benutzen, die, wenn Sie wollen, würden alle Plural Methoden Singular erscheinen lassen. Dies führt jedoch zu Mehrdeutigkeit. Wenn Sie beispielsweise ein Modell mit einer Methode namens getUsers haben, würden Sie (ohne zusätzliche Informationen) nicht wissen, ob die Methode eine Auflistung oder eine einzelne Entität zurückgibt.

jedoch die einfache Möglichkeit, dies zu umgehen, ist einfach das phpName Attribut des Tabellenelementes auf „Benutzer“ für die „Benutzer“ Tabelle in Ihrer schema.xml.