Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 23-10-2009 11:01:45

Seubeu
Membre
Date d'inscription: 28-09-2009
Messages: 19

[Résolu] [1.9.1] Bonne pratique Zend_Db_Table

Bonjour a tous,

J'ai commencé ZF depuis peu et j'ai une question concernant les références.

Considérons trois simples tables : Category, Langues et users.

Table category

Code:

[id] |    [name]
---------------------
  1  |   Catname1
  2  |   Catname2
  3  |   Catname3
  4  |   Catname4

Table langue

Code:

[id] |    [name]
---------------------
  1  |   French
  2  |   English

Table users

Code:

[id] |    [name]   |   cat_id    |     lang_id
------------------------------------------------
  1  |   Uname1   |      2        |         1
  2  |   Uname2   |      4        |         2

Bon vous aurez compris les relations ... smile
Jusqu'a aujourd'hui que ce soit avec le Zend Framework ou sans, si je veux lister mes users avec les libellés des langues et des catégories j'utilise un bon vieux JOIN.

Par exemple ici ca donnerai :

Code:

SELECT users.id, users.name, langue.name, category.name FROM users
       LEFT JOIN langue ON langue.id = users.lang_id
       LEFT JOIN category ON category.id = users.cat_id

Hors j'ai vu cette histoire de $_referenceMap. Alors je voulais savoir si dans un cas comme le mien, utiliser des JOIN est "has been" ou plutot conseillé ?


Merci de vos lumières.

Seb.

Dernière modification par Seubeu (23-10-2009 11:28:40)

Hors ligne

 

#2 23-10-2009 11:11:51

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Résolu] [1.9.1] Bonne pratique Zend_Db_Table

Salut,

Une requête unique avec jointures sera bien plus performante que le chargement de dépendances de Zend.

Pour un seul user ça représente 3 requêtes différentes dans la base.

Code:

$user = $userTable->find(1)->current();
$lang= $user->findDependentRowset('lang');
$category = $user->findDependentRowset('category');

Le lazy load est utile lorsque la dépendance est utilisée exceptionnellement. Dans le cas où elles sont nécessaires dès le départ et qu'en plus les collections correspondantes sont conséquentes, il n'est pas conseillé d'utiliser le lazy load et de récupérer les résultats en une seule requête avec Jointure.

Cependant, dans le cas d'applications à faible charge ce n'est pas gênant.


A+ benjamin.

Dernière modification par Delprog (23-10-2009 11:12:08)


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#3 23-10-2009 11:27:28

Seubeu
Membre
Date d'inscription: 28-09-2009
Messages: 19

Re: [Résolu] [1.9.1] Bonne pratique Zend_Db_Table

Pour un seul user ça représente 3 requêtes différentes dans la base.

Ok c'est bien ce qui me semblait.

Merci de ton aide. Je met le sujet en [Résolu] mais si quelqu'un veut ajouter quelques chose ya pas de soucis smile

A+.
Seb.

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