2011-04-25 92 views
0

如何将此SQL查询写入Doctrine 1.2查询?将SQL查询转换为Doctrine代码

SELECT * FROM homes 
    WHERE published = 1 
    AND 
    (
    LOWER(country) LIKE '$search%' 
    OR 
    LOWER(city) LIKE '$search%' 
    OR 
    LOWER(area) LIKE '$search%' 
    ) 

编辑

这是我的实际工作中查询。上面的例子是一个简化版本。我只是想,现在我怎么能结合多种WHERE一起

Doctrine_Query::create() 
         ->select('h.*,c.*') 
         ->from('Homes h') 
         ->where('h.published = ?',1) 
         ->addWhere('LOWER(c.printable_name) LIKE ?', $search . "%") 
         ->orWhere('LOWER(h.city) LIKE ?', $search . "%") 
         ->orWhere('LOWER(h.area) LIKE ?', $search. "%") 
         ->orWhere('LOWER(h.name) LIKE ?', $search. "%") 

         ->leftJoin('h.Countries c'); 
+0

为什么你需要明确的“LOWER”字段?使用默认排序规则('ci')mysql'LIKE'不区分大小写。 – zerkms 2011-04-25 10:54:11

+0

你有什么尝试?什么是错误信息?你知道吗,LIKE是判例性的吗? – vbence 2011-04-25 10:56:04

+0

我正在使用UTF-8和utf_general_ci没有LOWER()我没有得到大小写不敏感的结果 – chchrist 2011-04-25 10:59:30

回答

0

OK是:工作的脚本是:

Doctrine_Query::create() 
         ->select('h.*,c.*') 
         ->from('Homes h') 
         ->where('h.published = ?',1) 
         ->andWhere('LOWER(c.printable_name) LIKE ? OR LOWER(h.city) LIKE ? OR LOWER(h.area) LIKE ? OR LOWER(h.name) LIKE ?', array($search . "%",$search . "%",$search . "%",$search . "%")) 
         ->leftJoin('h.Countries c'); 

我不知道的还以为,如果这是写它的最佳方式。