php doctrine createQueryBuilder специальный символ

В базе данных хранится значение «& You», но приведенный ниже запрос не возвращает результат.

$buildQuery = $this->createQueryBuilder('r')
        ->where('r.TitreSearch LIKE :term')       
        ->setParameter('term', "%&You%")            
    ;

С другой стороны, если я буду искать "Вы", у меня будет результат

почему доктрина не понимает символа "&"?


person stloc    schedule 20.02.2018    source источник


Ответы (1)


Проблема не в символе амперсанда, а в самом запросе.

Если вы хотите, чтобы LIKE соответствовал шаблону внутри значения столбца, вы должны заключить поисковый запрос в знаки процента (например, %term%). Без знаков процента LIKE действует так же, как оператор =; он ищет точное совпадение.

Попробуйте следующее:

$term = "&You";
$buildQuery = $this->createQueryBuilder('r')
        ->where('r.TitreSearch LIKE :term')
        ->setParameter('term', "%$term%");
person lxg    schedule 20.02.2018
comment
Хорошо, но могу вас заверить, что у Doctrine нет проблем с самим амперсандом. Я только что тестировал в одном из своих приложений, работает файл. Может быть другая проблема, например закодирован амперсанд (URL-)? - person lxg; 20.02.2018
comment
как объяснить этот первый запрос на этой странице с прямой строкой, а вы не работаете? (БД SQLITE) - person stloc; 21.02.2018