1

私は Symfony にかなり慣れていないので、列を文字列と比較する方法を知りたいです。

リポジトリで QueryBuilder を使用しています。MySQL の同等の WHERE 句は次のとおりです。

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 は構文エラーを返します:

クエリ例外:SELECT a FROM Application a WHERE a.name = UPPER(my_var_app)

4

1 に答える 1

1

上位の呼び出しでは、最後の変数を''(一重引用符)で囲む必要があります。変数の補間には「」(二重引用符)も必要です

   $builder->where($builder->expr()
                   ->eq('a.name'
                        ,$builder->expr()
                         ->upper("'$name'")));   //// here
于 2013-03-20T16:16:35.923 に答える