我有四个表: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原则,但我看不出它是什么。
答案 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(){
// ...
}
}
此解决方案可以为您服务吗?