Как отобразить связанные элементы на одной странице? - PullRequest
2 голосов
/ 16 марта 2010

Что касается cakephp, моя структура базы данных выглядит следующим образом:

1.) Класс

  • id
  • name
  • student_count

2.) Студент

  • id
  • имя
  • class_id
  • grade_id

3.) Оценка

  • id
  • name

Мой вопрос: я хочу, чтобы моя страница статистики имела макет, аналогичный -

1.) Класс 1 (Всего учащихся = XX)

  • Учащийся класса A = XX
  • Учащийся класса B = XX
  • Учащийся класса C = XX

2.) Класс 2 (всего ученика = XX)

  • Ученик класса А = XX
  • Ученик класса B = XX
  • СтепеньC ученик = XX

Я применяю counterCache => true в модели моего ученика с, чтобы я мог получить общее количество учеников в каждом классе, используя одну находку («все»), но как насчет числа учеников в каждом классе?а как объединить 2 запроса в один экран?

Ответы [ 2 ]

0 голосов
/ 16 марта 2010

Я думаю, что вы можете пересмотреть свою схему. Вы действительно хотите, чтобы ученик принадлежал только к одному классу?

Я бы рекомендовал настроить класс так же. Измените модель студента, чтобы иметь идентификатор, имя. Затем установите класс HABTM для учащихся, установите класс hasAndBelongsTo. Вам понадобится объединительная таблица grades_students, которая будет связывать студентов и оценки.

Теперь у каждого учащегося может быть> 1 класс, хотя вы ограничены только 1 классом на каждого учащегося (что, если ученик повторяет урок? Это должно определяться вашим бизнес-планом ...)

Наконец, с этой настройкой вам нужно будет использовать поведение Containable. Это позволит вам отфильтровать по модели Стьюдента критерии из связанных моделей (как правило, с HABTM вы не можете сделать это иначе).

0 голосов
/ 16 марта 2010

Не уверен, но я думаю, что вы можете попробовать это так:

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