我是一個網站建設者,我有一些表,可以總是建立一個類,並根據該表創建它的一個對象嗎?我有一個老師表(ID,用戶名)和基於它的一類了giveMark()
,editMark()
等。另一個是學生(ID,姓名)表,與getMarks()
,getMissingHours()
等。現在因爲有一個N:M學生和教師之間的關係,我有一個link_teacher_student(ID,TEACHED_ID,STUDENT_ID)表,這是一個「幫手」表。我是否也應該爲它創建類/對象?可以爲數據庫表創建類/對象嗎?
3
A
回答
2
是的。這樣做不僅可以,將數據層(或模型)與其他代碼分開是一個好主意。
這樣做意味着您可以編寫更少的代碼來完成更多任務,因爲您不必在整個地方重複使用相同的代碼,這意味着您只需要擔心在需要時更新一段代碼以某種方式改變你的模型。
0
這取決於您的代碼需要多少功能。如果您的網絡應用需要很多基於不同的用戶類型的功能,我會爲每個用戶類型創建一個不同的模型和控制器。如果用戶類型之間的功能沒有太大差別,則可以使用單個統一類,並採用幾種方法進行區分。
我也只是將teacher_id
列添加到學生表 - 您不需要創建一個全新的表來映射關係。
3
否,您不應該有link_teacher_student
表的對象。 This is common thing to do in a RDBMS structure, but not in an OOP model.在OOP模型相同relationsip將是簡單地:
class Teacher {
protected $students = array();
}
class Student {
protected $teachers = array();
}
你會然後使用DataMapper給init該陣列取出一個Teacher
或Student
,例如,當你的DAO將查詢教師和join the students和映射器然後create Student objects並填寫他們在老師陣列。
你可以做的是將$students
或$teachers
轉換成Repositories,併爲它們提供查找方法查詢查找表,
class Teacher
…
public function __construct($studentsRepository)
{
$this->students = $studentRepository;
}
public function getStudents()
{
return $this->students->findByTeacherId($this->id);
}
}
class StudentRepository
…
public function findByTeacherId($teacherId)
{
foreach ($this->dao->select('SELECT …', $teacherId) as $student) {
$students[] = $this->studentBuilder->build($student);
}
return $students;
}
}
相關問題
- 1. 可以嵌入數據庫對象嗎?
- 2. System.Object類可以保存數據表對象的對象嗎?
- 3. 我可以爲動態數組列表超類的類型對象創建一個子類對象嗎?
- 4. 可以根據條件語句創建類的對象嗎?
- 5. 創建數據庫對象列表
- 6. 您可以創建CLR UDT以允許跨數據庫共享表類型嗎?
- 7. 我們可以創建對象到接口和抽象類嗎?
- 8. 在Django中,我可以在創建對象時指定數據庫嗎?
- 9. 可能在PL/SQL中創建Oracle數據庫對象類型?
- 10. 我可以爲每個數據庫創建多個集合嗎?
- 11. 數據傳輸對象類可以包含其他對象嗎?
- 12. 創建一個可爲空的對象。可以做到嗎?
- 13. 一個子類可以創建抽象類型超類的對象嗎?
- 14. 我們可以在創建新對象時改變類名嗎?
- 15. 我可以在同一個類中創建對象嗎?
- 16. 我可以創建與自身類型相同的對象嗎?
- 17. 解構函數參數時可以創建一個對象嗎?
- 18. MS企業庫可以從數據庫構建對象模型和代碼嗎?
- 19. 我可以在類庫項目中創建數據庫連接嗎?
- 20. 我可以創建一個嵌套表作爲屬性的對象表嗎?
- 21. java - 我可以創建一個對象的內部類的對象嗎?
- 22. 我可以爲接口創建對象嗎?
- 23. 爲大數據創建數據庫表
- 24. 從數據庫行創建對象
- 25. 我可以爲對象動態創建屬性類型和屬性名稱嗎?
- 26. 我可以在JavaScript中創建自己的數組對象嗎?
- 27. 我們可以說構造函數創建對象嗎?
- 28. 使用while函數可以創建x個對象嗎?
- 29. 創建類對象列表
- 30. 創建類對象列表
http://en.wikipedia.org/wiki/Object-relational_mapping –