2011-01-05 17 views
0

Ich versuche, eine benutzerdefinierte Abfrage zu generieren (ich entwickle eine Suchmaschine für eine Website).Wie übersetzt man diese Abfrage mit Doctrine?

übersetzen Dies wird te Abfrage:

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 

Könnten Sie mir bitte helfen?

Antwort

7

Nicht getestet, aber so etwas wie dies sollte es tun:

$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(); 

... das macht die Tatsache Gebrauch, dass zum Beispiel:

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

... gleich ist wie:

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

Es scheint zu arbeiten, danke! – bahamut100

+1

+1 ... Ich würde "prix" auch zu "o.prix" machen. – Tom

+0

@Tom Gut entdeckt. Geändert. –