Problem with addSearchCondition
Problem with addSearchCondition
Доброе время суток! Есть такая проблема:
$criteria->addSearchCondition("unaccent(name)","unaccent($this->keyword)",true,'OR','ILIKE');
unaccent() - это функция бд(Я использую бд PostgreSQL). Она принимает строку, убирает в ней "лишние символы" и возвращает строку(например: unaccent(''Caffè propaganda") вернет нам такую строку: Caffe propaganda ). Я вызываю функцию для столбца таблицы(unaccent(name)) и это работает отлично, а потом также вызываю ее для строки поиска (unaccent($this->keyword)) и тут функция почему то не работает...не пойму что не так?Почему так не работает? Перепробовал разные варианты расстановки различных кавычек, но ничего не помогает . Подскажите,пожалуйста что не так?
$criteria->addSearchCondition("unaccent(name)","unaccent($this->keyword)",true,'OR','ILIKE');
unaccent() - это функция бд(Я использую бд PostgreSQL). Она принимает строку, убирает в ней "лишние символы" и возвращает строку(например: unaccent(''Caffè propaganda") вернет нам такую строку: Caffe propaganda ). Я вызываю функцию для столбца таблицы(unaccent(name)) и это работает отлично, а потом также вызываю ее для строки поиска (unaccent($this->keyword)) и тут функция почему то не работает...не пойму что не так?Почему так не работает? Перепробовал разные варианты расстановки различных кавычек, но ничего не помогает . Подскажите,пожалуйста что не так?
- lancecoder
- Сообщения: 2532
- Зарегистрирован: 2012.06.26, 17:16
Re: Problem with addSearchCondition
"unaccent({$this->keyword})",
{}
{}
Re: Problem with addSearchCondition
все равно не работает
- lancecoder
- Сообщения: 2532
- Зарегистрирован: 2012.06.26, 17:16
Re: Problem with addSearchCondition
с escape работать не будет
- lancecoder
- Сообщения: 2532
- Зарегистрирован: 2012.06.26, 17:16
Re: Problem with addSearchCondition
с ним точно, а может и вообще не будет, там идет все через параметры, посмотри какой запрос получается в оконцове
Re: Problem with addSearchCondition
вот часть запроса: WHERE (((unaccent(name) ILIKE :ycp6)
OR (city ILIKE :ycp7)) OR (name_it ILIKE :ycp8)) ORDER BY nopicture,
rank_index DESC LIMIT 12. Bound with :ycp6='%unaccent(Caffe propaganda)%',
:ycp7='%Caffe propaganda%', :ycp8='%Caffe propaganda%'
вроде все правильно...
OR (city ILIKE :ycp7)) OR (name_it ILIKE :ycp8)) ORDER BY nopicture,
rank_index DESC LIMIT 12. Bound with :ycp6='%unaccent(Caffe propaganda)%',
:ycp7='%Caffe propaganda%', :ycp8='%Caffe propaganda%'
вроде все правильно...
- lancecoder
- Сообщения: 2532
- Зарегистрирован: 2012.06.26, 17:16
Re: Problem with addSearchCondition
lancecoder писал(а):с escape работать не будет
- lancecoder
- Сообщения: 2532
- Зарегистрирован: 2012.06.26, 17:16
Re: Problem with addSearchCondition
lancecoder писал(а):с ним точно, а может и вообще не будет
Re: Problem with addSearchCondition
...не совсем понял что такое escape в данном случае?
Re: Problem with addSearchCondition
А если:
?
А то мне это: unaccent(Caffe propaganda) не нравится без кавычек.
Код: Выделить всё
$criteria->addSearchCondition("unaccent(name)","unaccent('{$this->keyword}')",true,'OR','ILIKE');
А то мне это: unaccent(Caffe propaganda) не нравится без кавычек.
Re: Problem with addSearchCondition
а как это можно засунуть в кавычки?
Re: Problem with addSearchCondition
Тот код что я привел. Но это не более чем предположение. С Postgres, я общался очень давно, и могу тупить.
Re: Problem with addSearchCondition
кроме кавычек добавились еще и слэши: Bound with :ycp6='%unaccent(\'Caffè
propaganda\')%'
propaganda\')%'
Re: Problem with addSearchCondition
А теперь вспомним что говорил lancecoder, думаю дело в этом.
хинт
хинт
Re: Problem with addSearchCondition
поставил в false, но результата не дало(
Re: Problem with addSearchCondition
Какой запрос генерится теперь?
Re: Problem with addSearchCondition
Bound with :ycp6='unaccent(\'Caffè
propaganda\')'
все равно эти слэши
propaganda\')'
все равно эти слэши
Re: Problem with addSearchCondition
Странно. Ждите, может кто-то еще подскажет, у меня пока нет идей.
Re: Problem with addSearchCondition
ага, спасибо)
- lancecoder
- Сообщения: 2532
- Зарегистрирован: 2012.06.26, 17:16
Re: Problem with addSearchCondition
ну так кавычки появились из за этогоLoki писал(а):А если:?Код: Выделить всё
$criteria->addSearchCondition("unaccent(name)","unaccent('{$this->keyword}')",true,'OR','ILIKE');
А то мне это: unaccent(Caffe propaganda) не нравится без кавычек.
тут вопрос в другом, парсится условия параметрами, а у тебя получается что параметр имеет не значение а функцию БД.
Если вот так не заработает переходи на дао
Код: Выделить всё
$criteria->addSearchCondition("unaccent(name)","unaccent({$this->keyword})",false,'OR','LIKE');