Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 05-05-2009 15:17:35

aure
Membre
Lieu: Chimay, Belgique
Date d'inscription: 05-05-2009
Messages: 30
Site web

Affichage valeur autre que l'id d'une table liée

Bonjour,

je voudrais afficher les entrées d'une table de la base de données pour lesquels les valeurs des foreign key seraient remplacées par une valeur de la table liée.

Par exemple deux tables: 'person' et 'country'. La table 'person' contient une FK vers 'country'. Et, par exemple, lorsque je liste les entrées de la table 'person', le nom du pays s'affiche à la place de son 'id' pour toutes les entrées récupérées.

Quelle serait la meilleure façon de faire ?

Je ne sais pas si Zend permet ça nativement (rien vu dans ce sens dans la doc) ou si je dois modifier le tableau de valeur récupéré en le parcourant ligne par ligne (ce qui peut devenir vite lourd pour récupération importante de données...).

Merci, wink

auré

Hors ligne

 

#2 05-05-2009 17:05:57

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: Affichage valeur autre que l'id d'une table liée

Si j'ai bien compris tu parles de jointure sql.

Je te renvois sur cette article : Auto-Jointure

Hors ligne

 

#3 05-05-2009 17:14:41

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

Re: Affichage valeur autre que l'id d'une table liée

ce que propose ZF en natif :
tu utilise ton objet table person et tu récupère des élément sur chaque élément zd te propose une méthode pour récupérer les élément liés dans la table country

Simple à mettre en œuvre
Couteux en requêtes (pour 1000 personne cela fait 1001 requêtes) à n'utiliser que pour des cas ou on va chercher une personne ou un tout petit nombre.

ce que ZF permet de faire facilement :
à partir d'un Zend_Db_Select faire une jointure entre person et contry et lire les champs nécéssaire

facile à faire et à utiliser
peux couteux en requête (pour 1000 personnes avec leur pays 1 requête) à utiliser pour des volumes importants
inconvénient les élément remontés ne sont que des données et plus des rows et donc pas directement enregistrable dans la base.

encore un solution facile :
charger toute la table contry une seule fois et la garder en session
lire les éléments dans la table person et assembler le tous en php

assez simple à mettre en œuvre
nécessite 1 requête de plus pour la session de l'utilisateur.
idéal pour une table de référence (ne changeant pas ou très peu et ayant un très petit volume)

ce que permet ZF avec une bonne dose de prise de tête :
créer un objet table mappé non pas sur un table de la base mais sur la jointure des deux table
nécessite une surcharge que quelques méthodes de Zend_Db_Table et Zend_Db_Table_Row

difficile de mise en œuvre (surtout la première fois)
peux couteux en requête dans la base (1 seule requête)
conserve la notion d'objet de Zend_Db et permet donc de réenregistrer les row avec les méthodes standard.

Voilà les option qui s'offre à toi
pour la beauté de la chose la dernière est à essayer lorsqu'on as du temps devant soit elle peut même se généraliser. mais pour un besoin ponctuel c'est plutôt lourd à mettre en œuvre. je conseille tout de même d'essayer ça une fois car dès qu'on l'a mis au point pour un cas c'est très facile à décliner

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