Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
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
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
C'est plutôt simple:
- Tu as ton model Album
- Tu fais un Album/Relational.php:
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
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
Hors ligne
Détrompes toi, un ORM tel que Doctrine en utilisant correctement un cache est très très performant .
Hors ligne
Mais toujours moins que le PDO avec cache
C'est comme utiliser un framework php ou coder en php
Hors ligne
slasch a écrit:
Mais toujours moins que le PDO avec cache
C'est comme utiliser un framework php ou coder en php
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
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
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
Hors ligne