Страница 1 из 1
Как в Yii1 выстроить регистронезависимый search модели для грида?
Добавлено: 2016.06.30, 06:43
EVOSandru6
Добрый день,
По умолчанию в гриде регистрозависимый поиск:
Код: Выделить всё
public function search() {
$criteria->compare('t.name', $this->name , true );
...
}
Пробовал добавлять такие варианты:
Код: Выделить всё
$criteria->addSearchCondition('t.name', '%'.$this->name.'%', false, 'AND', 'ILIKE');
$criteria->addSearchCondition('name', $this->name, true, 'AND', 'ILIKE');
$criteria->compare('LOWER(name)',strtolower($this->name),true);
$criteria->compare('name', strtoupper($model->name), true);
$criteria->compare('name', strtolower($model->name), true);
$criteria->compare('name', mb_strtoupper($model->name, 'UTF-8'), true);
Но тщетно.. В качестве БД -
Postgres
Re: Как в Yii1 выстроить регистронезависимый search модели для грида?
Добавлено: 2016.06.30, 08:37
SiZE
Re: Как в Yii1 выстроить регистронезависимый search модели для грида?
Добавлено: 2016.06.30, 08:52
EVOSandru6
Благодарю,
$criteria->compare('LOWER(title)', strtolower($this->title), true);
помогло!
Re: Как в Yii1 выстроить регистронезависимый search модели для грида?
Добавлено: 2016.06.30, 14:07
EVOSandru6
Только мочему-то если пищещь ГоРбаТоЕСлово, то данное правило не работает(
Re: Как в Yii1 выстроить регистронезависимый search модели для грида?
Добавлено: 2016.06.30, 14:32
zelenin
mb_strtolower
Re: Как в Yii1 выстроить регистронезависимый search модели для грида?
Добавлено: 2016.06.30, 14:48
EVOSandru6
zelenin писал(а):mb_strtolower
Почему-то ругается на эту команду, но не в ней дело, ГорБатый нормально ищется. Один момент не ясен. Мне нужно, чтобы из таблицы товаров поиск шел по названию - как
Like и жесткий поиск по поставщику (
supplier_id), если он указан. Безх него все ищется хорошо.
К сожалению такая конструкция не дает желаемого результата:
Код: Выделить всё
$criteria->addSearchCondition('LOWER(name)', strtolower($search->name), true, 'AND', 'ILIKE');
if($search->supplier_id)
$criteria->compare('id', $search->supplier_id, false, 'AND');
Не подскажите , в чем косяк?
Re: Как в Yii1 выстроить регистронезависимый search модели для грида?
Добавлено: 2016.06.30, 16:28
SiZE
Сделай
у тебя нормально выводится в браузер если написать ГоРбаТоЕСлово?
Re: Как в Yii1 выстроить регистронезависимый search модели для грида?
Добавлено: 2016.06.30, 16:31
zelenin
SiZE писал(а):Сделай
у тебя нормально выводится в браузер если написать ГоРбаТоЕСлово?
http://www.yiiframework.ru/forum/viewto ... 78#p191264
Re: Как в Yii1 выстроить регистронезависимый search модели для грида?
Добавлено: 2016.07.01, 08:36
Said
Код: Выделить всё
$criteria->addSearchCondition('name', $this->name, true, 'AND', 'ILIKE');
это должно работать в postgresql
Re: Как в Yii1 выстроить регистронезависимый search модели для грида?
Добавлено: 2016.07.01, 13:24
EVOSandru6
SiZE писал(а):Сделай
у тебя нормально выводится в браузер если написать ГоРбаТоЕСлово?
Да нормально, с горбатым проблем нет. Проблема в другом - нужно это:
Код: Выделить всё
$sql = "
select
*
from
m_products
where
LOWER(name) ILIKE '%".strtolower($search->name)."%'
and
exist = '".ActiveRecord::EXIST_PUBLIC."'
";
if($search->supplier_id)
$sql .= " and supplier_id = '".$search->supplier_id."'";
$model = Products::model()->findAllBySql($sql);
Заменить :
Код: Выделить всё
$criteria = new CDbCriteria();
$criteria->addSearchCondition('LOWER(name)', strtolower($search->name), true, 'AND', 'ILIKE');
if($search->supplier_id)
$criteria->compare('id', $search->supplier_id, false, 'AND');
// $model = Products::model()->published()->findAll($criteria);
Подобным.
Первый случай с запросом - работает. С критерий нет(
Re: Как в Yii1 выстроить регистронезависимый search модели для грида?
Добавлено: 2016.07.01, 13:25
EVOSandru6
Said писал(а):Код: Выделить всё
$criteria->addSearchCondition('name', $this->name, true, 'AND', 'ILIKE');
это должно работать в postgresql
Спасибо, но пришлось
strtolower -ить
Re: Как в Yii1 выстроить регистронезависимый search модели для грида?
Добавлено: 2016.07.01, 13:51
SiZE
Да мне прост интересно почему он mb_ не пользует.