2010-03-16 71 views
2

它關於CakePHP的,我的數據庫結構如下:如何在單個頁面中顯示關聯項目?

1)

  • ID
  • STUDENT_COUNT

2)學生

  • i d
  • 類標識碼
  • grade_id

3)級

  • ID

我的問題: 我希望我的統計頁面佈局類似 -

1)第1類(共學生= XX)

  • A級學生= XX
  • B級學生= XX
  • C級學生= XX

2.)第2類(總學生= XX)

  • 甲級學生= X X
  • B級的學生= XX
  • C級學生= XX

我申請counterCache =>在我的學員的模式真正用,這樣我就可以得到每個學生的總數課堂使用單個發現('全部')功能,但每個年級的學生數量如何?以及如何將2個查詢合併到單個顯示中?

回答

0

不知道,但我想你可以嘗試這樣的:

$students = $this->Student->find('all',array('condtions'=>array('class_id'=>array($class1id,$class2id)),'group'=>array('class_id','grade_id'))); 
0

我想你可能要重新考慮你的架構。你真的只想讓一個學生只屬於一個班級嗎?

我建議設置類相同。將您的學生模型更改爲ID,姓名。然後設置學生HABTM等級,設置等級hasAndBelongsTo Class。你需要一個連接表,grades_students,這將連接學生和成績。

現在每個學生可以有> 1班,但每個班級每個學生僅限1個等級(如果一個學生重複上課,該怎麼辦?這應該由您的業務設計決定......)

最後,使用此設置,您將需要使用Containable行爲。它將允許您從學生模型中過濾相關模型的標準(通常使用HABTM,否則您無法這樣做)。

+0

謝謝特拉維斯,我會試試看。事實上,我正在找到如何獲得總數的方式。項目基礎上的id。 例如:function getStudentByClassid($classid) 使用正常的PHP代碼,我只是簡單地創建一個函數,返回整數,然後將它應用到PHP文件一樣 的foreach($類爲$類){ 回聲$類 - >的getName( ); echo getStudentByClassid($ class-> getID()); } 但在cakephp中,我不能簡單地在視圖中調用該函數! 實際上正確的方式是什麼? – Stringtokenizer 2010-03-17 04:42:16

+0

在Cake方法中,不是調用視圖中的函數,而是視圖只有數據數組(除了helpers ...),所以基本上你的控制器調用getStudentByClassid($ class_id),並將其設置爲視圖。在控制器中,$ this-> set('students',$ this-> Class-> getStudentsByClassId($ class_id);然後在視圖中有一個包含數據的$ students數組。 – 2010-03-17 14:58:43

相關問題