2010-03-16 4 views
2

Il CakePHP en ce qui concerne, la structure de ma base de données sont les suivantes:comment afficher les éléments associés dans une seule page?

1.) Classe

  • id
  • Nom
  • student_count

2.) étudiant

  • i d
  • Nom
  • class_id
  • grade_id

3.) Niveau

  • id
  • Nom

Ma question: Je veux ma page statistique avec la disposition similaire à -

1.) Classe 1 (étudiant Total = XX)

  • Grade A étudiant = XX
  • grade B étudiant = XX
  • grade C étudiant = XX

2.) Classe 2 (étudiant total = XX)

  • Grade A Étudiant = X X
  • grade B étudiant = XX
  • étudiant grade C = XX

Je demande counterCache => true dans mon modèle de l'étudiant avec, afin que je puisse obtenir le nombre total d'étudiants de chaque Classroom utilisant une fonction de recherche unique ('all'), mais qu'en est-il du nombre d'élèves dans chaque classe? et comment combiner 2 requête dans un seul affichage?

Répondre

0

Je ne sais pas mais je pense que vous pouvez l'essayer comme ceci:

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

Je pense que vous pouvez revoir votre schéma. Voulez-vous vraiment seulement qu'un étudiant appartienne à un seul cours?

Je vous recommande de configurer la classe comme identique. Changez votre modèle d'étudiant pour avoir l'identifiant, le nom. Ensuite, configurez une classe HABTM pour les étudiants, configurez une classe hasAndBelongsTo. Vous aurez besoin d'une table de correspondance, grades_students, qui reliera les étudiants et les notes.

Maintenant, chaque étudiant peut avoir plus d'une classe, bien que vous soyez limité à une seule classe par élève et par classe (que se passe-t-il si un étudiant répète un cours?Enfin, avec cette configuration, vous devrez utiliser le comportement Contenable. Il vous permettra de filtrer à partir du modèle Student sur les critères des modèles associés (généralement avec HABTM vous ne pouvez pas le faire autrement).

+0

Merci Travis, je vais essayer. En fait, je trouve le moyen d'obtenir le nombre total. de la base de l'article sur l'ID. exemple: function getStudentByClassid($classid) en utilisant un codage normal php, je viens de créer simplement une fonction et revenir interger, puis appliquez dans le fichier .php comme foreach (classe $ en classe $) { echo $ classe-> getName () echo getStudentByClassid ($ class-> getID()); } mais dans cakephp, je ne peux pas simplement appeler la fonction dans Vues! Quelle est la bonne façon en fait? – Stringtokenizer

+0

Dans le mode Cake, plutôt que d'appeler des fonctions à l'intérieur des vues, les vues ont uniquement des tableaux de données (excepté les helpers ...) Donc, votre contrôleur appelle getStudentByClassid ($ class_id) et le place dans la vue. Dans le contrôleur, $ this-> set ('students', $ this-> Class-> getStudentsByClassId ($ class_id); Puis dans la vue vous avez un tableau $ students avec les données dedans. –

Questions connexes