Страница 1 из 2

Problem with addSearchCondition

Добавлено: 2012.11.20, 00:31
Charlie
Доброе время суток! Есть такая проблема:
$criteria->addSearchCondition("unaccent(name)","unaccent($this->keyword)",true,'OR','ILIKE');
unaccent() - это функция бд(Я использую бд PostgreSQL). Она принимает строку, убирает в ней "лишние символы" и возвращает строку(например: unaccent(''Caffè propaganda") вернет нам такую строку: Caffe propaganda ). Я вызываю функцию для столбца таблицы(unaccent(name)) и это работает отлично, а потом также вызываю ее для строки поиска (unaccent($this->keyword)) и тут функция почему то не работает...не пойму что не так?Почему так не работает? Перепробовал разные варианты расстановки различных кавычек, но ничего не помогает :( . Подскажите,пожалуйста что не так?

Re: Problem with addSearchCondition

Добавлено: 2012.11.20, 00:33
lancecoder
"unaccent({$this->keyword})",

{}

Re: Problem with addSearchCondition

Добавлено: 2012.11.20, 00:42
Charlie
все равно не работает :(

Re: Problem with addSearchCondition

Добавлено: 2012.11.20, 00:47
lancecoder
с escape работать не будет

Re: Problem with addSearchCondition

Добавлено: 2012.11.20, 00:49
lancecoder
с ним точно, а может и вообще не будет, там идет все через параметры, посмотри какой запрос получается в оконцове

Re: Problem with addSearchCondition

Добавлено: 2012.11.20, 00:52
Charlie
вот часть запроса: 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%'

вроде все правильно...

Re: Problem with addSearchCondition

Добавлено: 2012.11.20, 00:57
lancecoder
lancecoder писал(а):с escape работать не будет

Re: Problem with addSearchCondition

Добавлено: 2012.11.20, 00:57
lancecoder
lancecoder писал(а):с ним точно, а может и вообще не будет

Re: Problem with addSearchCondition

Добавлено: 2012.11.20, 00:58
Charlie
...не совсем понял что такое escape в данном случае?

Re: Problem with addSearchCondition

Добавлено: 2012.11.20, 01:00
Loki
А если:

Код: Выделить всё

$criteria->addSearchCondition("unaccent(name)","unaccent('{$this->keyword}')",true,'OR','ILIKE');
?
А то мне это: unaccent(Caffe propaganda) не нравится без кавычек.

Re: Problem with addSearchCondition

Добавлено: 2012.11.20, 01:01
Charlie
а как это можно засунуть в кавычки?

Re: Problem with addSearchCondition

Добавлено: 2012.11.20, 01:03
Loki
Тот код что я привел. Но это не более чем предположение. С Postgres, я общался очень давно, и могу тупить.

Re: Problem with addSearchCondition

Добавлено: 2012.11.20, 01:07
Charlie
кроме кавычек добавились еще и слэши: Bound with :ycp6='%unaccent(\'Caffè
propaganda\')%'

Re: Problem with addSearchCondition

Добавлено: 2012.11.20, 01:09
Loki
А теперь вспомним что говорил lancecoder, думаю дело в этом.
хинт

Re: Problem with addSearchCondition

Добавлено: 2012.11.20, 01:15
Charlie
поставил в false, но результата не дало(

Re: Problem with addSearchCondition

Добавлено: 2012.11.20, 01:22
Loki
Какой запрос генерится теперь?

Re: Problem with addSearchCondition

Добавлено: 2012.11.20, 01:27
Charlie
Bound with :ycp6='unaccent(\'Caffè
propaganda\')'


все равно эти слэши

Re: Problem with addSearchCondition

Добавлено: 2012.11.20, 01:48
Loki
Странно. Ждите, может кто-то еще подскажет, у меня пока нет идей.

Re: Problem with addSearchCondition

Добавлено: 2012.11.20, 01:49
Charlie
ага, спасибо)

Re: Problem with addSearchCondition

Добавлено: 2012.11.20, 03:22
lancecoder
Loki писал(а):А если:

Код: Выделить всё

$criteria->addSearchCondition("unaccent(name)","unaccent('{$this->keyword}')",true,'OR','ILIKE');
?
А то мне это: unaccent(Caffe propaganda) не нравится без кавычек.
ну так кавычки появились из за этого
тут вопрос в другом, парсится условия параметрами, а у тебя получается что параметр имеет не значение а функцию БД.
Если вот так не заработает переходи на дао

Код: Выделить всё

$criteria->addSearchCondition("unaccent(name)","unaccent({$this->keyword})",false,'OR','LIKE');