ООП представление данных из запроса JOIN - PullRequest
0 голосов
/ 30 ноября 2010

У меня есть четыре таблицы: отдел (идентификатор, имя), курс (идентификатор, имя), персонал (идентификатор, имя, 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 и Department, но написание таких методов, как $course->percentComplete($dept_id), кажется неправильным, а $course->percentComplete('all') - еще более неправильным. Среднее значение курса не является разумным свойством объекта экземпляра курса, но размещение его на объекте отдела означало бы дублирование кода между двумя классами, что, безусловно, неправильно.

Я ожидаю, что здесь есть какой-то базовый ОО-принцип, который я нарушаю, но не вижу, что это такое.

1 Ответ

0 голосов
/ 30 ноября 2010

Я бы поместил код в классе 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(){
     // ...
   }

}

Может ли это решение работать на вас?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...