2015-01-19 8 views
2

Apigility 구동 웹 응용 프로그램은 Zend Framework 2을 기반으로하고 있습니다. 모델 레이어의 경우 ZfcBaseDbMapper을 사용하고 있습니다.밑줄이 쳐진 표의 열을 ZF2의 camelcased 모델 클래스 속성에 매핑하는 방법은 무엇입니까?

현재 내 DB 테이블의 컬럼 이름은 해당 모델 등록 정보와 정확히 동일합니다. 둘 다 camelcased 표기법을 사용하고 있습니다 (첫 임시 해결책이었습니다). 이제 컬럼의 이름을 정정하고 그것들을 원하지 않게 만들고 싶습니다.

ORM을 사용하지 않고 이것을 수행하는 방법 (doctrine과 같은)? 필터 (Zend\Filter\Word\CamelCaseToUnderscore, Zend\Filter\Word\UnderscoreToCamelCase, Zend\Filter\StringToLower 또는 단지 strtolower(...))가 필요합니다. 글쎄요,하지만 여기서 어떻게 활용해야합니까?

답변

3

모든 데이터베이스 열 이름을 새로운 under_score 명명 규칙으로 업데이트해야합니다. 데이터베이스 어댑터는이 정보에 대해 데이터베이스를 자동으로 쿼리합니다.

그런 다음 새 column_name을 개체 속성 propertyName에 '매핑'하려면 개체 매화 장치가 필요합니다.

default mapper is ClassMethods (out of the box supports the conversion to underscore separated keys, using the filter classes you mentioned).

따라서 이름 지정은 작동해야합니다. 사용자는 매퍼를 만들 때 hydrator (underscoreSeparatedKeys)의 생성자에 true을 전달하기 만하면되므로 매우 쉽게 수행 할 수 있습니다.

+1

방금 ​​열 이름을 다시 변경했습니다 (이름이 다시 강조되었습니다). 그리고 그것은 작동합니다. 나는 이것이 전에는 작동하지 않는다는 것을 맹세 할 수있었습니다. 그것이 이유였습니다. 왜 내가 처음에 열 이름을 camelcased로 만들었습니까. 마법 ... :) 어쨌든, 그것은 작동합니다. 좋은 설명 주셔서 감사합니다! – automatix