예 :Zend Framework에서 데이터 맵퍼 사용하기
남성 사용자 ID, 이름 및 성을 검색해야하지만 그 밖의 것은 없습니다.
그래서 사용자 엔티티 집합을 반환하는 fetchAllMaleUsers()라는 UserMapper 함수가 있습니다.
즉 :
public function fetchAllMaleUsers() {
$select = $this->getDbTable()
->select()
->from($this->getDbTable(),
array('ID', 'FirstName', 'LastName'))
->where('Gender = ?', 'M');
$resultSet = $this->getDbTable()->fetchAll($select);
$users = array();
foreach ($resultSet as $row) {
$user = new Application_Model_User();
$user->setId($row->ID)
->setFirstName($row->FirstName)
->setLastName($row->LastName);
$users[] = $user;
}
return $users;
}
- 이 기능은 매퍼 층에 속해 있습니까?
- 각 사용자 엔티티의 ID, 이름 및 성만 설정해도 괜찮습니까?
감사합니다. 모든 열을 쿼리하면 DB에 대한 불필요한 계산처럼 보이기 때문에 감사드립니다. 하지만 문제가되지 않을 수도 있습니다. 그래서 언제든지 User 엔터티의 속성을 가져 오려고 할 때 모든 열을 User 엔터티에 매핑해야합니까? – Craig
@Craig : 예. 사람들은 처음에는 잘못된 장소에서 최적화하는 경향이 있습니다. 동일한 db 테이블에서 추가 열을 가져 오는 것은 거의 오버 헤드가 없습니다 (물론 바이너리 데이터를 저장하면 ...). 응용 프로그램을 최적화하려면 zend 프레임 워크와 PHP 코드를 사용하는 것이 좋습니다 (일반적으로 더 복잡한 db- 쿼리 또는 db- 레이아웃). 모드/매퍼에 대한 아이디어를 얻는 좋은 출발점은 http://www.survivethedeepend.com/zendframeworkbook/en/1.0과 http://weierophinney.net/matthew/archives/입니다. 202-Model-Infrastructure.html – Fge