Как перевести этот запрос с помощью Doctrine?

Я пытаюсь создать собственный запрос (я разрабатываю поисковую систему для веб-сайта).

Это запрос на перевод:

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

Не могли бы вы мне помочь, пожалуйста ?


person bahamut100    schedule 05.01.2011    source источник


Ответы (1)


Не тестировалось, но что-то вроде этого должно помочь:

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

... это использует тот факт, что, например:

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

...такой же как:

AND `id_secteur` IN (1, 2, 3)
person Matt Gibson    schedule 05.01.2011