2017-03-29 4 views
0

Propel \ Runtime \ Collection \ ObjectCollection-> toJSON()은 json 문자열을 반환합니다. 첫 번째 요소에는 모델의 PHP 이름이 복수화 된 키가 있습니다.Propel 2.0 복수화 비활성화 또는 수정

기존의 프로젝트에서 협약에 이미 복수형을 사용하고있는 것이 문제입니다. 따라서 모델 "사용자"의 경우이 첫 번째 요소는 "Userss"(추가 's'포함)로 반환됩니다.

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

내가 (문서에 설명 된대로 propel.ext 파일의 propel.generator.objectModel.pluralizerClass을 수정 시도했다 :

예를 들어, 다음은 반환되는 무슨의 첫 번째 비트입니다 http://propelorm.org/documentation/reference/configuration-file.html) 이것은 생성 된 설정에 아무런 영향을 미치지 않으며 동작을 변경하지 않습니다.

StandardEnglishPluralizer 코드의 코드를 중단 했으므로 설정에 무엇이 설정되어 있어도 StandardEnglishPluralizer는 항상 사용 된 것입니다.

복수화를 비활성화하거나 복수화하지 않는 복수 화자를 만들려면 어떤 방법이 있습니까?

+0

사용자가 아닌 모델 사용자의 이름을 지정하는 특별한 이유가 있습니까? 여러분의 모델에 대해 단수의 이름을 사용하고 propel이 다원화를 처리하게하면 결과적으로 훨씬 더 읽기 쉬운 코드가됩니다. – chocochaos

답변

1

Propel2를 사용하면 원한다면 복수형을 단수로 표시하는 고유 한 복수 화자를 만들고 사용할 수 있습니다. 그러나 이는 모호한 결과를 가져옵니다. 예를 들어 getUsers라는 메서드가있는 모델이있는 경우 메서드에서 컬렉션 또는 단일 엔터티를 반환하는지 여부는 알 수 없습니다 (추가 정보없이).

그러나이 간단한 해결 방법은 schema.xml의 "Users"테이블에 대해 table 요소의 phpName 속성을 "User"로 설정하는 것입니다.