2011-07-29 247 views
1

我試圖找出其中的關係類型,我應該使用涉及以下內容:CakePHP的模型關聯

我們必須具有教師和學生的課堂。

學生和老師都屬於教室。但是反過來呢?

我可以在課堂模式如下:

var $hasMany = array('Students');

var $hasOne = array('Teacher');

感謝。

+0

它取決於您希望在這些模型上具有哪些操作約束。在現實生活中,一個學生可以有很多老師;但是如果一個學生在你的應用中只能有一位老師,那麼hasOne就是正確的關係。 –

+0

好吧,對我來說,教室更像是一種行政事務,我可以在教室裏看到學生和老師。一個教室可以有多個學生和一個教師。一名學生只能屬於一個教室。老師負責教室,並且應該有能力列出課堂上的學生。 – AlexBrand

回答

1

取決於您想要如何檢索和/或建模數據。

假設你Classrooms只會有一個Teacher,或Teachers將只有一個Classroom,你甚至可以逃脫製作ClassroomTeacher領域。

但是我們假設你想保留所有的對象。在這種情況下,您的模型看起來像這樣:

// classroom.php 
class Classroom extends AppModel { 
    var $hasMany = array('Student'); 
    var $hasAndBelongsToMany = array('Teacher'); 
} 

// teacher.php 
class Teacher extends AppModel { 
    var $hasMany = array('Student'); 
    var $hasAndBelongsToMany = array('Classroom'); 
} 

// student.php 
class Student extends AppModel { 
    var $belongsTo = array('Teacher', 'Classroom'); 
} 
+0

你能解釋一下老師模型中的$ hasAndBelongsTo嗎?一個$ belongsTo會有什麼區別?謝謝! – AlexBrand

+0

當你考慮這些關係時,請記住它們存在以允許輕鬆加入模型。$ ​​hasAndBelongsToMany允許的用於*交叉連接*並以更復雜的方式加入。假設你的博客中有用戶發佈信息,用戶在評論中回覆。用戶可以成爲帖子的一部分,成爲評論的一部分(如果您說有用戶名標籤),「擁有」帖子和「自己」的評論。一個簡單的$ hasMany或$ belongsTo關係不能很好地處理這些關係的雙向性質。我建議您閱讀以下內容:http://book.cakephp.org/view/1044/hasAndBelongsToMany-HABTM – dclowd9901

0

它非常依賴於你的情況,但在我的老學校,這確實是正確的,雖然也許是不必要的關係增加。

教師有很多學生 教室有一個老師 課堂有很多學生

然而,做學生走動?學生和課堂之間的關係是否完全必要?我認爲在這種情況下最重要的關係是師生關係。然後也許是老師教室。你可以根據這些關係,一些學生是教室的一部分來猜測。

因此:

課堂 - 教師 - 學生<課堂 (有一個)教師(有很多)學生

然後,您可以通過老師發現教室的學生。