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.