Propel Criteria Builder
Par Christophe Benz le vendredi, janvier 16 2009, 11:16 - Lien permanent
Symfony propose les ORM Propel ou Doctrine par défaut.
L'ORM est censé simplifié l'écriture des requêtes. Cependant le développeur maîtrisant bien le langage SQL saura sans difficulté exprimer une requête SQL mais devra réfléchir pour être capable de l'exprimer dans l'ORM.
Si vous utilisez Propel, voici un site qui propose de construire le Criteria Propel à partir d'une requête SQL, ou même d'une sous-partie de requête SQL.
Par exemple, si j'entre ceci :
contact.id NOT IN (1,2,3)
Le code suivant sera généré :
$c = new Criteria(); $crit0 = $c->getNewCriterion(ContactPeer::ID, array(1,2,3), Criteria::NOT_IN); // Perform at level 0 ($crit0 ) // Remember to change the peer class here for the correct one in your model $c->add($crit0); $result = TablePeer::doSelect($c); // This loop will of course need to be edited to work foreach ($result as $obj) { //$val = $obj->getValue(); }
Reste à adapter ce code à notre application.

Commentaires
C'est marrant, moi qui croyais que les ORMs servaient à simplifier le code de requêtage, là c'est particulièrement raté
Je préfère lire le SQL que tout ce boilerplate PHP.
Je suis d'accord, j'ai toujours trouvé Propel illisible et trop bas niveau, c'est d'ailleurs pour ça qu'il existe Doctrine qui le remplace dans Symfony depuis quelque temps déjà.
Mais bon, avec PHP comme langage, difficile de faire plus sexy...