Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 03-06-2008 14:59:42

Asfaloth
Membre
Lieu: Bruxelles
Date d'inscription: 13-05-2008
Messages: 83
Site web

[Zend_Db] findManyToManyRowset

Re-bonjour à tous,

Je continue mon exploration du zend framework, et je bloque un petit peu sur la fonction mentionnée en sujet.

Je vai essayer d'être le plus complet possible, voici un aperçus des tables que j'utilise:

http://pix.nofrag.com/5/0/d/59acbcb0f91c8438828a467a56a5at.jpg

La table Lex correspond à des bâtiments, dans chaques batiment je peux installer du matériel, et lors de leur installation, suivant le type de matériel, il y a certaines information techniques à remplir (Log d'accès, IP, emplacement dans le rack, ...).

Chaque matériel n'a pas besoin du même type d'information technique (les attributs) mais ont des choses en commun, d'où la table de liaison.

Ma question est la suivante, en utilisant les $_referenceMap du zendFramework, est-il possible d'avoir directement un tableau contenant toutes les infos matériel pour un seul lex ?

Pour l'instant j'ai fait ceci, qui marche très bien:

Code:

$rowLex = $dbLex->find($lexId);
$lex = $rowLex->current();
$rowsetMaterial = $lex->findManyToManyRowset('DbMaterial', 'DbLexMaterial');

Avec la fonction findManyToManyRowset est-il possible d'aller chercher des informations plus loin qu'un seul niveaux via une table de liaison ?

Ai-je plutot interet à faire du FullLoading (j'ai vu pas mal de tuto qui en parle, mais ça me semble lourd comme méthode, détrompez-moi si ej me trompe)

Ou bien le plus simple est-il tout simplement de faire un select->join ?


Merci d'avance


La capacité d'apprendre est un don.
La faculté d'apprendre est un talent.
La volonté d'apprendre est un choix.
-=[ Frank Herbert ]=-

Hors ligne

 

#2 03-06-2008 15:10:12

Bast
Membre
Date d'inscription: 07-06-2007
Messages: 138

Re: [Zend_Db] findManyToManyRowset

findXXXViaTableLiaison peut être ?

Hors ligne

 

#3 03-06-2008 15:25:00

Asfaloth
Membre
Lieu: Bruxelles
Date d'inscription: 13-05-2008
Messages: 83
Site web

Re: [Zend_Db] findManyToManyRowset

Bast a écrit:

findXXXViaTableLiaison peut être ?

findXXXViaTableLiaison est la méthode magique de findManyToManyRowset();

et je suis limité à un seul niveaux de liaison, hors ici je dois remonter de 2 niveaux:

je dois passer par Lex_Material pour savoir sur quel Lex je me trouve, et je dois Passer par Material_Material_Attribute afin d'avoir le nom des attributs technique du dit matériel en place.

Alors avec une requete sql c'est facile, ça donne ça:

Code:

SELECT
    Lex_Material.Lex_Material_Name
    , Material.Material_Brand
    , Material.Material_Name
    , Material_Attribute.Material_Attribute_Name
    , Lex_Material_Technical_Info.Lex_Material_Technical_Info_Value
FROM
    intranet.Lex_Material
    INNER JOIN intranet.Material 
        ON (Lex_Material.Material_Id = Material.Material_Id)
    INNER JOIN intranet.Lex 
        ON (Lex_Material.Lex_Id = Lex.Lex_Id)
    INNER JOIN intranet.Lex_Material_Technical_Info 
        ON (Lex_Material_Technical_Info.Lex_Material_Id = Lex_Material.Lex_Material_Id)
    INNER JOIN intranet.Material_Material_Attribute 
        ON (Material_Material_Attribute.Material_Id = Material.Material_Id) AND (Lex_Material_Technical_Info.Material_Material_Attribute_Id = Material_Material_Attribute.Material_Material_Attribute_Id)
    INNER JOIN intranet.Material_Attribute 
        ON (Material_Material_Attribute.Material_Attribute_Id = Material_Attribute.Material_Attribute_Id)
WHERE (Lex.Lex_Id = '02ALS0');

Mais concretement avec le ZF j'ai un peu de mal à saisir comment on gère ce genre de requete (et encore, c'est pas la plus dur ni la plus longue de ma BDD qui fait une centaine de tables environ).

Si il y une bonne âme spécialisé en requete à rallonge qui veut bien m'aider, je serai tout plein de bonheur dedans mon corps.
Le but n'étant bien entendu pas de faire le code à ma place mais de m'expliquer comment on gère ce genre de galère...


La capacité d'apprendre est un don.
La faculté d'apprendre est un talent.
La volonté d'apprendre est un choix.
-=[ Frank Herbert ]=-

Hors ligne

 

#4 03-06-2008 15:34:57

stf
Membre
Date d'inscription: 03-04-2008
Messages: 156

Re: [Zend_Db] findManyToManyRowset

je cherchais a faire ca aussi pendant un moment, il me semble que ce n'est  pas possible(en tout cas j'ai abandonné l'idée), maintenant, je fais ca directement avec la syntaxe objet pour ces requetes là(meme pour toutes )

Hors ligne

 

#5 03-06-2008 15:44:33

Asfaloth
Membre
Lieu: Bruxelles
Date d'inscription: 13-05-2008
Messages: 83
Site web

Re: [Zend_Db] findManyToManyRowset

ok neutral

Quand tu dis que tu utilise la syntaxe objet pour toute tes requêtes tu veux dire ça ?

Code:

$db = new DbTable();
$select = $db->select();
$select->from();
$select->join();
$select->query();

Merci pour ta réponse, ça va m'éviter de continuer à m'acharner sur la doc big_smile

Et si qqun dément, apparemment il y a deux personnes d'interressées ^__^

EDIT

Du coup ça me pose une autre question, si tu utilise ça, quel est le meilleur emplacement pour ce code ? dans le controller ou une fonction dans le modèle d'une table de la Db ?

Dernière modification par Asfaloth (03-06-2008 15:47:15)


La capacité d'apprendre est un don.
La faculté d'apprendre est un talent.
La volonté d'apprendre est un choix.
-=[ Frank Herbert ]=-

Hors ligne

 

#6 03-06-2008 15:53:54

stf
Membre
Date d'inscription: 03-04-2008
Messages: 156

Re: [Zend_Db] findManyToManyRowset

Voila, je parlais de cette syntaxe là , je sais pas si il y a un nom officiel pour dire "SQL Objet", m'enfin smile

J'ai mi ca dans la classe de ma table de mon ORM, donc dans l'équivalent du modèle pour le MVC

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