samedi 23 août 2014

Requête SQL et hydratation d'objet via Doctrine2

Symfony2 nous permet de créer des entités, et des managers pour ces entités.
Si dans un de ces managers, vous avez besoin d'exécuter une requête SQL (à ne pas confondre avec une requête DQL), le retour sera sous la forme de tableau et non pas d'entités comme pour une requête DQL.

Pour hydrater automatiquement le retour de votre requête SQL, voici un exemple :
$rsmb = new ResultSetMappingBuilder($this->_em); // indique quelle entité devra être hydratée par les retours de la requête $rsmb->addRootEntityFromClassMetadata(Foo::class, 'foo'); // configuration du mapping pour une entitée liée // elle doit être faite, même si l'entitée liée n'est pas sélectionnée dans votre requête SQL // si vous ne le faites pas, le type de la clef étrangère ne sera pas connu par Doctrine, // qui la laissera en string, alors qu'elle devrait probablement être castée en int $rsmb->addJoinedEntityFromClassMetadata( Bar::class, 'bar', 'foo', 'Foo::$lienAvecBar', ['id' => 'bar_id'] ); // la requête à exécuter $query = $this->_em->createNativeQuery('SELECT * FROM table_foo foo', $rsmb); // $result contiendra un tableau d'entités Foo $result = $query->getResult();

Sources
devandco
ldaguise

samedi 9 août 2014

Passer de Symfony 2.4.x à 2.5.x

Passer de la branche 2.4.x à la branche 2.5.X de Symfony n'est pas si facile, à cause de nombreux bugs apportés par la migration.

Sensio est bien au courant de ce problème, et fait tout pour corriger la branche 2.5.x pour que la migration soit plus facile.

A cause de ces problèmes de migration, la maintenance de la branche 2.4.x continue jusqu'à septembre 2014, alors qu'elle aurait du s'arrêter fin juillet 2014.

Source : symfony.com

Symfony 2.5.3

Symfony 2.5.3 est sortie le 6 août avec presque 30 bugs corrigés, aucune rupture de compatibilité et aucune nouvelle feature.

Vous êtes fortement encouragés à updater votre Symfony, si vous êtes sur la branche 2.5.x.
La seule contrainte, à vérifier chez vous, serait un bug dans la validation des formulaires si vous avez une version de PHP inférieure à la 5.3.9 : issues/11580.

Télécharger Symfony