Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 24-10-2013 16:55:02

kham
Nouveau membre
Date d'inscription: 28-01-2012
Messages: 8

Jointure et Objet dans le modele

Bonjour,

Je suis en train de creer une application ZF2 pour apprendre a coder ZF2 (connaissant tres bien ZF1...)

Mais je ne comprends pas un truc et la doc n'explique pas des masses... (ou rien du tout :d)

Quand on fait un fetchAll(), ça nous retourne une liste d'objet (pour faire s'imple) exemple dans le getting started, une liste d'album...

Mais imaginons que album ait une clef étrangère Auteur....

J'aimerais faire une jointure et dans la table Album, et que ça me retourne un truc du style ..

Almum 1 (objet) :
   - id (int)
   - nom (string)
   - auteur (object auteur...)

Possible ça.. une solution?

Merci

Hors ligne

 

#2 24-10-2013 20:07:38

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: Jointure et Objet dans le modele

Bonjour,

Oui c'est tout à fait possible, mais ce n'est pas vraiment simple... Je te conseille fortement de te tourner vers l'ORM doctrine, qui est extrèmement simple à intégrer, et dispose d'énormément de documentation et d'une grosse communauté. C'est le plus utilisé sur ZF2 et Symfony2...

Hors ligne

 

#3 28-11-2013 11:33:50

slasch
Membre
Date d'inscription: 23-11-2007
Messages: 18

Re: Jointure et Objet dans le modele

C'est plutôt simple:

- Tu as ton model Album
- Tu fais un Album/Relational.php:

Code:

class Relational extends Album
{
    protected $author;

    // Mettre getter setter.

    public function exchangeArray($data)
    {
        parent::exchangeArray($data);
        $this->author = new Author();
        $this->author->exchangeArray($data);
    }
}

Cette solution impose juste que tous tes nom de colonnes de ta table author soit différent de celle de album. Du coup imposer nomdetable_name, etc est pas mal smile

Solution simple qui évite de mettre un ORM lourd.

Encore une fois si tu ne cherche pas la performance DB => ORM, si tu cherche la performance DB évite l'ORM et ma solution est la bonne je pense smile

Hors ligne

 

#4 28-11-2013 12:31:01

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Jointure et Objet dans le modele

Détrompes toi, un ORM tel que Doctrine en utilisant correctement un cache est très très performant smile.

Hors ligne

 

#5 28-11-2013 14:10:41

slasch
Membre
Date d'inscription: 23-11-2007
Messages: 18

Re: Jointure et Objet dans le modele

Mais toujours moins que le PDO avec cache smile

C'est comme utiliser un framework php ou coder en php wink

Hors ligne

 

#6 11-12-2013 16:24:43

Bouks
Membre
Lieu: Paris
Date d'inscription: 31-08-2012
Messages: 241

Re: Jointure et Objet dans le modele

slasch a écrit:

Mais toujours moins que le PDO avec cache smile
C'est comme utiliser un framework php ou coder en php wink

Je suis tout à fait d'accord avec toi.
Personnellement j'utilise ZF2 mais je ne fais pas tout avec. Et notamment pas la partie métier.
Ca me fait du code plus léger (en performance mais aussi en lignes de code) et pas dépendant.
Si je veux changer de framework, c'est beaucoup plus simple.
Autre bénéfice, je peux facilement porter mon code sur un autre langage, comme java par exemple.

Le problème aussi avec ZF, Doctrine... c'est que tu te dois de faire des mises à jour régulièrement. Mises à jour qui implique parfois pas mal de travail (zf1->zf2 par exemple). Et, malheureusement, il est souvent bien difficile au décideur, qui généralement paye, d'accepter de (trop) prendre du temps pour ce genre de considérations (qualité, dette technique voire même sécurité...).
Donc réduire la quantité de code impactée par de tels changement n'est pas une mauvaise idée.

slasch a écrit:

Cette solution impose juste que tous tes nom de colonnes de ta table author soit différent de celle de album. Du coup imposer nomdetable_name, etc est pas mal smile

Solution simple qui évite de mettre un ORM lourd.

Encore une fois si tu ne cherche pas la performance DB => ORM, si tu cherche la performance DB évite l'ORM et ma solution est la bonne je pense smile

Avoir des noms de colonnes différentes, c'est la base d'une bonne architecture. Ça évite les conflits et les pertes d'informations éventuelles. Ça permet en outre l'utilisation aisée des jointures naturelles.
Cependant, une colonne référencée comme clé étrangère se doit de porter le même nom que dans la table "parente".
Pour le nommage, et pour une lecture moins verbeuse, je conseille le trigramme ou quadrigramme. par exemple pour :
nomdetable_name -> ndt_name


22914720

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