Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 23-07-2008 13:14:50

Moimeme
Membre
Date d'inscription: 19-04-2007
Messages: 120

controleur ou model

Je me pose une question de conception et j'aimerais avoir votre avis.

Prenons le cas d'un utilisateurs qui peux avoir accés a certaines applications.
J'ai en BDD 3 tables :

users (user_id, user_name, user_surname)
users_apps(user_id, apps_id)
apps(apps_id, apps_nom, apps_date_fin)

Maintenant je veux récupérer les users avec leurs droits sur les applis je fait appel à ma facade qui va aller recuperer les users et les droits genre :

Code:

$return = $users->fetchAll()->toArray();
foreach($return as $value){
    $value['apps'] =  $apps->fetchAll('user_id='.$value['user_id'])->toArray();
}
return $return;

Coté vue le table retourné va pas être pratique pour savoir si un user a accés a une appli ou pas je suis obligé de parser à chaque fois le tableau $return['apps']. J'aimerais reformater mes donnés pour avoir en clé du tableau non pas un compteur mais la clé de l'application, comme cela j'ai juste a faire un array_key_exists.

Donc ma question est la suivante Dois je faire ce reformatage dans ma facade , mon controlleur ou ma vue ?

en gros j'ai

Code:

array( [0] => array('user_id'=>'1'
                             'user_name'=>'toto'
                             'user_surname'=>'tata'
                             'apps' => array( [0] => array('apps_id'=>'25',
                                                                          'apps_nom'=>'app1',
                                                                           'apps_date_fin=>'2009_01_01'),
                                                      [1] => array('apps_id'=>'3',
                                                                          'apps_nom'=>'app3',
                                                                           'apps_date_fin=>'2009_01_01'))
            .../....

et je voudrais :

Code:

array( [0] => array('user_id'=>'1'
                             'user_name'=>'toto'
                             'user_surname'=>'tata'
                             'apps' => array( [25] => array('apps_id'=>'25',
                                                                          'apps_nom'=>'app1',
                                                                           'apps_date_fin=>'2009_01_01'),
                                                      [3] => array('apps_id'=>'3',
                                                                          'apps_nom'=>'app2',
                                                                           'apps_date_fin=>'2009_01_01'))
            .../....

Merci d'avance.

Dernière modification par Moimeme (23-07-2008 13:16:57)

Hors ligne

 

#2 23-07-2008 13:54:35

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: controleur ou model

Moi, je le ferais dans le modèls

$user->getApps() doit te renvoyé le tableau comme tu penses qu'il est le mieux approprié.
Éventuellement, si t'as besoin d'un retour différent selon des 'cas', tu peux lui adjoindre un paramètre pour savoir de quel manière doit être formaté le tableau que tu reçois.

Dernière modification par nORKy (23-07-2008 13:54:56)


----
Gruiiik !

Hors ligne

 

#3 23-07-2008 16:28:29

_Fuse_
Membre
Lieu: Aquitaine
Date d'inscription: 10-07-2008
Messages: 92

Re: controleur ou model

Salut,

Moimeme a écrit:

Je me pose une question de conception et j'aimerais avoir votre avis.

Est ce que tu as regardé du cote de Zend_Acl , pour implementer des controles d'acces?
Bien sur ca ne repond pas a ton probleme avec la BDD, mais ca me semble tout a fait convenir à un cas d'application comme le tien.

see y@

Hors ligne

 

#4 23-07-2008 17:26:26

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: controleur ou model

pourquoi ne fais-tu pas une seule requête avec une jointure ?
sinon

Code:

$return = $users->fetchAll()->toArray();
foreach($return as $value){
    $uApps = $apps->fetchAll('user_id='.$value['user_id'])->toArray();
    foreach($uApps as $app){
        $value['apps'][$app['app_id']] =  $app;
    }
}
return $return;

mais se serais beaucoup plus efficace avec une seule requête et un seul parcours du résultat
A+JYT

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages