Problem with addSearchCondition

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Charlie
Сообщения: 9
Зарегистрирован: 2012.11.20, 00:16

Problem with addSearchCondition

Сообщение Charlie »

Доброе время суток! Есть такая проблема:
$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

Сообщение lancecoder »

"unaccent({$this->keyword})",

{}

Charlie
Сообщения: 9
Зарегистрирован: 2012.11.20, 00:16

Re: Problem with addSearchCondition

Сообщение Charlie »

все равно не работает :(

Аватара пользователя
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 »

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

Charlie
Сообщения: 9
Зарегистрирован: 2012.11.20, 00:16

Re: Problem with addSearchCondition

Сообщение 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%'

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

Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: Problem with addSearchCondition

Сообщение lancecoder »

lancecoder писал(а):с escape работать не будет

Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: Problem with addSearchCondition

Сообщение lancecoder »

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

Charlie
Сообщения: 9
Зарегистрирован: 2012.11.20, 00:16

Re: Problem with addSearchCondition

Сообщение Charlie »

...не совсем понял что такое escape в данном случае?

Аватара пользователя
Loki
Сообщения: 65
Зарегистрирован: 2011.01.16, 10:47
Откуда: Омск

Re: Problem with addSearchCondition

Сообщение Loki »

А если:

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

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

Charlie
Сообщения: 9
Зарегистрирован: 2012.11.20, 00:16

Re: Problem with addSearchCondition

Сообщение Charlie »

а как это можно засунуть в кавычки?

Аватара пользователя
Loki
Сообщения: 65
Зарегистрирован: 2011.01.16, 10:47
Откуда: Омск

Re: Problem with addSearchCondition

Сообщение Loki »

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

Charlie
Сообщения: 9
Зарегистрирован: 2012.11.20, 00:16

Re: Problem with addSearchCondition

Сообщение Charlie »

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

Аватара пользователя
Loki
Сообщения: 65
Зарегистрирован: 2011.01.16, 10:47
Откуда: Омск

Re: Problem with addSearchCondition

Сообщение Loki »

А теперь вспомним что говорил lancecoder, думаю дело в этом.
хинт

Charlie
Сообщения: 9
Зарегистрирован: 2012.11.20, 00:16

Re: Problem with addSearchCondition

Сообщение Charlie »

поставил в false, но результата не дало(

Аватара пользователя
Loki
Сообщения: 65
Зарегистрирован: 2011.01.16, 10:47
Откуда: Омск

Re: Problem with addSearchCondition

Сообщение Loki »

Какой запрос генерится теперь?

Charlie
Сообщения: 9
Зарегистрирован: 2012.11.20, 00:16

Re: Problem with addSearchCondition

Сообщение Charlie »

Bound with :ycp6='unaccent(\'Caffè
propaganda\')'


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

Аватара пользователя
Loki
Сообщения: 65
Зарегистрирован: 2011.01.16, 10:47
Откуда: Омск

Re: Problem with addSearchCondition

Сообщение Loki »

Странно. Ждите, может кто-то еще подскажет, у меня пока нет идей.

Charlie
Сообщения: 9
Зарегистрирован: 2012.11.20, 00:16

Re: Problem with addSearchCondition

Сообщение Charlie »

ага, спасибо)

Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: Problem with addSearchCondition

Сообщение 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');

Ответить