Bonjour!
J'ai un peu soucis.
Voilà, j'ai deux tables "roles" contenant une liste de joueurs ainsi que les rôles de chacun dans une journée, et une table "users" contenant la liste des utilisateurs.
Voici un extrait :
* TABLE "roles" : id, jour, id_user1_role, id_user2_role, id_user3_role, id_user4_role, id_user5_role, id_user6_role
1 2 3 4 5
| 1 J1 1 2 3 4 5 6
2 J2 3 6 5 6 4 1
3 J3 3 6 2 1 5 4
4 J4 6 4 3 2 1 5
etc. |
* TABLE "users" : id, nom
1 2 3 4 5
| 1 DURAND
2 DUPOND
3 TOI
4 MOI
etc. |
Dans une journée, un utilisateur n'a qu'un et un seul rôle.
Ainsi, dans l'enregistrement suivant de la table "rôles" :
nos 6 utilisateurs ont eu chacun un rôle respectif. Un utilisateur ne peut pas avoir deux rôles dans la même journée. Voilà pour les présentations.
Maintenant, j'aimerais avoir l'ensemble des rôles. La ligne suivante me retourne cette liste :
1 2 3 4 5
| // Création de l'instance "rôles"
$roles = new Role_Model_DbTable_Roles();
// Récupération de tous les roles
$this->view->roles = $roles->fetchAll(); |
Et le code suivant, dans le même contrôleur, me permet de récupérer les utilisateurs :
1 2 3 4 5
| // Création de l'instance "users"
$users = new Role_Model_DbTable_Users();
// Récupération de tous les users
$this->view->users = $users->fetchAll(); |
Ce que j'aimerais pouvoir faire, c'est afficher ceci :
1 2 3 4
| 1 J1 DURAND DUPOND TOI MOI etc etc
2 J2 TOI etc etc etc MOI DURAND
3 J3 TOI etc DUPOND DURAND etc MOI
4 J4 etc MOI TOI DUPOND DURAND etc |
chaque "id" de l'utilisateur étant remplacé par le nom correspondant.
L'une des solutions que j'ai, c'est de faire un foreach imbriqué dans un autre.
Pour chaque enregistrement d'un rôle
<?php foreach($this->roles as $role) : ?>
je dois parcourir autant de fois le Zend_Db_Table_Rowset de la table "users" que j'ai d'utilisateurs (6 pour mon exemple). Ca va faire très lourd, car j'ai 365 (ou 366) jours par an donc 365 (ou 366) enregistrements par an.
L'autre solution, c'est pour chaque "id" de l'enregistrement d'un rôle, rechercher dans la table "users" le nom correspondant. Donc pour chaque un enregistrement, une requête avec en paramètre les id des utilisateurs concernés sera exécutée sur la table "users"...
Auriez-vous une solution moins coûteuse et peut-être plus rapide (en réalité, dans une journée, j'ai plus d'une centaine d'utilisateurs ayant chacun un rôle respectif) ?
Merci.
Partager