2011-01-05 3 views
0

Je tente de générer une requête personnalisée (je développe un moteur de recherche pour un site web).Comment traduire cette requête avec Doctrine?

Ceci est te demande de traduire:

SELECT * FROM `offre_habitation` 
WHERE `id_type_offre` = 2 
AND `id_nature_offre` = 1 
AND (`nb_pieces` = 2 or `nb_pieces` = 1 or `nb_pieces` = 3 or `nb_pieces` = 4) 
AND (`id_secteur`=1 OR `id_secteur` = 2 or id_secteur = 3) 
AND `surface_habitable` > 90 
AND `prix` > 700 

Pourriez-vous me aider s'il vous plaît?

Répondre

7

Non testé, mais quelque chose comme ça devrait faire l'affaire:

$q = Doctrine_Query::create() 
    ->select('o.*') 
    ->from('offre_habitation o') 
    ->where('o.id_type_offre = ?', 2) 
    ->andWhere('o.id_nature_offre = ?', 1) 
    ->andWhereIn('o.nb_pieces', array(1, 2, 3, 4)) 
    ->andWhereIn('o.id_secteur', array(1, 2, 3)) 
    ->andWhere('o.surface_habitable > ?', 90) 
    ->andWhere('o.prix > ?', 700); 

// Test: 
echo $q->getSqlQuery(); 

... ce qui rend l'utilisation du fait que, par exemple:

AND (`id_secteur`=1 OR `id_secteur` = 2 or id_secteur = 3) 

... est le même comme:

AND `id_secteur` IN (1, 2, 3) 
+0

Cela semble fonctionner, merci! – bahamut100

+1

+1 ... Je ferais aussi "prix" en "o.prix". – Tom

+0

@Tom Bien repéré. Modifié. –

Questions connexes