Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
pour mon premier post sur le forum, je souhaitais me présenter rapidement. Je m'appelle Romain et je découvre depuis peu ZF2. Plutôt habitué à CakePHP, j'ai l'obligation de me lancé dans ZF2 pour le boulot.
En effet, mon supérieur souhaite refondre totalement l'application qu'ils ont développé avec ZF1 pour passer à ZF2.
Malheureusement pour moi, je ne connais ni ZF1, ni ZF2. J'ai donc effectué les différents tutos proposés sur la doc officielle pour comprendre la logique de ce framework. J'ai également lu en large et en travers la doc...
Mais, je me retrouve à avoir pleins de questions, notamment sur le TableGateway et le Zend\Db\Sql.
D'après ce que j'ai pu comprendre, le TableGateway représente un objet d'une des tables de la BDD alors que le Zend\Db\Sql serait plus propice pour effectuer des requêtes SQl (si je me trompe, n'hésitez pas à me corriger !).
Oui mais voila... Dans quelle situation utiliser l'un plutôt que l'autre ? Peut-on les utiliser ensemble ? Est-ce que la structure de notre application sous ZF1 peut déterminer le choix d'utiliser l'un ou l'autre ?
Il me semble que j'ai lu sur internet qu'il n'était pas recommandé d'utiliser le TableGateway si on avait des liaisons entre les tables (ce que l'application possède sur presque toutes les tables) et qu'il fallait mieux passer par Zend\Db\Sql... (rumeur urbaine ?)
Je tiens à préciser que nous ne souhaitons pas utiliser Doctrine 2 (dommage !) afin de réduire le temps de migration entre les deux framework (apprentissage de Doctrine pour tous les dévs).
Merci d'avance pour votre lecture et vos réponse !
Passez une bonne journée.
Romain
PS : j'espère avoir poster au bon endroit sur le forum...
Dernière modification par RomainG (10-06-2015 09:13:56)
Hors ligne
Bonjour,
Pour réduire le temps de migration, il faut justement utiliser doctrine2, particulièrement dans la cas de tables avec liaisons. Du moins c'est mon avis perso, mais avec la génération des modèles à partir de la DB c'est instantané.
Pour faire tes requêtes avec jointure, Zend\Db\Sql est quasi obligatoire. Zend Table Gateway permet seulement un accès assez direct à une table, c'est tout.
Hors ligne
Hey, il y a des truc cool avec Zend\Db\Sql et Zend\Db\TableGateway\TableGateway :
[lang=php] use Zend\Db\TableGateway\TableGateway; use Zend\Db\Sql\Select; $artistTable = new TableGateway('artist', $adapter); // search for at most 2 artists who's name starts with Brit, ascending $rowset = $artistTable->select(function (Select $select) { $select->where->like('name', 'Brit%'); $select->order('name ASC')->limit(2); });
Du coup le mieux c'est d'utiliser les deux
Je te renvois sur la doc : http://framework.zend.com/manual/curren … teway.html
Dernière modification par flobrflo (10-06-2015 11:29:18)
Hors ligne
Je plussoie Théocrite, Doctrine permet de faciliter justement tout ce qui est jointure etc..
D'autre part pour tout ce qui est migrations de Zf1 à Zf2 aucune solutions simple n'existe, les framework sont complètement différents, toutefois une partie de la documentation du framework sous github en parle, si jamais tu ne l'a pas vue voici un lien :
https://github.com/zendframework/zf2-do … /migration
Peut être que tu y trouveras des informations intéressantes.
Pour ce qui est de Doctrine et son apprentissage, c'est un coup en temps au départ c'est sur, mais ce temps sera peut être pondéré par la vitesse de la migration gagné plutôt qu'en passant par les modules Zend\DB et Zend\Sql.
Hors ligne
Salut, pareil que les autres. Personnellement je n'ai jamais utilisé Zend\DB et Doctrine est plutôt simple d'utilisation la doc est bien foutu.
En terme d'apprentissage t'as pas besoin de faire de SQL donc encore plus simple pour les dev. Le but de doctrine (comme hibernate puisque doctrine est clairement inspiré d'hibernate) est de permettre à des développeurs ne connaissant pas SQL d'en faire.
Hors ligne
Merci à tous pour vos réponses !
Je vais voir avec les autres devs pour utiliser Doctrine...
Pour ce qui est de l'apprentissage et du SQL, cela ne pose pas de problème dans le sens où toutes les requêtes (ou presque) faites sous ZF1 ont été faite avec le Zend_Db_Select à l'époque.
J'avoue que pour ma part, je serais tenté d'utiliser Doctrine pour sa simplicité d'utilisation !
Si j'ai d'autres questions, je reviens vous voir.
Romain
Hors ligne
Et bien au pire tu peux aussi faire du SQL natif avec Doctrine et mapper tes résultats dans un objet ou un tableau si tu préfères .
Hors ligne