2013-03-20 39 views
1

我是Symfony的新手,我想知道如何繼續比較列與字符串。列對比(上)

我在存儲庫中使用QueryBuilder。 等效WHERE在MySQL條款是:

WHERE UPPER(a.name) = UPPER(my_app_var) 
class ApplicationRepository extends EntityRepository 
{ 
    public function existsByName($name, $caseSensitive = false) 
    { 
     $builder = $this->createQueryBuilder('a'); 

     if ($caseSensitive) 
     { 
      $builder->where($builder->expr()->eq('a.name', $name)); 
     } 
     else 
     { 
      $builder->where($builder->expr()->eq('a.name', $builder->expr()->upper($name))); 
     } 

     return count($builder->getQuery()->getResult()) != 0; 
    } 
} 

的Symfony返回我一個語法錯誤:

QueryException: SELECT a FROM Application a WHERE a.name = UPPER(my_var_app)

+0

這個異常是否告訴別的什麼?此查詢本身似乎有效... – 2013-03-20 15:57:17

+0

謝謝。沒有其他奇怪的事情,我也有這個消息:'QueryException:[Syntax Error] line 0,col 81:Error:Expected'。'或'(',得到'my_var_app'' – ludriv 2013-03-20 16:03:39

回答

1

您需要包住你在 ''(單引號),最後一個變量爲上呼叫。您還需要使用「」(雙引號)進行可變內插

$builder->where($builder->expr() 
        ->eq('a.name' 
         ,$builder->expr() 
         ->upper("'$name'"))); //// here 
+0

太好了!非常感謝! – ludriv 2013-03-20 16:20:02