我需要檢索一組男性用戶的ID,名字和姓氏,但沒有別的。
所以我在UserMapper中有一個名爲fetchAllMaleUsers()的函數,它返回一組用戶實體。
即:
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,Firstname和LastName嗎?
謝謝,我只是猶豫不決,因爲查詢每一列似乎是不必要的數據庫計算。但也許這不是問題。所以每當我嘗試獲取用戶實體的屬性時,我都應該將每個列映射到用戶實體? – Craig 2010-11-18 23:03:30
@克雷格:是的。事實上,人們往往首先在錯誤的地方優化。從相同的db-table獲取額外的列幾乎沒有開銷(當然,如果你在那裏存儲二進制數據...)。如果你想優化你的應用程序,zend框架和你的php代碼是一個好的開始(以及更復雜的db-queries或db-layout)。一個好的開始,讓behing模式/ mapper的東西是(和你的其他評論)是http://www.survivethedeepend.com/zendframeworkbook/en/1.0和http://weierophinney.net/matthew/archives/ 202-Model-Infrastructure.html – Fge 2010-11-18 23:54:31