来自JOIN查询的数据的OOP表示

时间:2010-11-29 22:12:22

标签: oop design-patterns orm

我有四个表:department(id,name),course(id,name),staff(id,name,dept_id)和staff_to_course(staff_id,course_id)。我需要说明每个部门有多少人(并且没有)完成每门课程以及每个部门和每门课程的平均成绩:

       | Course 1 | Course 2 | Average |
----------------------------------------
Dept 1 |      20% |      30% |     25% |
----------------------------------------
Dept 2 |      10% |      40% |     25% |
----------------------------------------
All    |      18% |      33% |     25% |
----------------------------------------

我可以进行SQL连接查询,但我对如何正确使用对象在内部表示数据感到困惑。

我目前已经获得了课程和部门对象,但编写像$course->percentComplete($dept_id)这样的方法感觉有些不对劲,$course->percentComplete('all')感觉更加错误。课程平均数不是课程实例对象的合理属性,但将其放在部门对象上意味着在两个类中复制代码,这绝对是错误的。

我希望我在这里违反了一些基本的OO原则,但我看不出它是什么。

1 个答案:

答案 0 :(得分:0)

我会将代码放在Staff类中的静态方法中。

例如......

public class Staff extends MyAbstractDB{

   // your attributes

   // your getter/setter

   public static List<Staff> listCompleted(Department dep){
     // here you should execute the sql query or use a criteria builder if you are using Hibernate
   }

   public static List<Staff> listCompleted(){
     // ...
   }

}

此解决方案可以为您服务吗?