2010-03-16 77 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

相关问题