Rsol
(Slava Rudnev)
1
Хотел сделать поиск по полю, но засада, Yii не хочет понимать % в конструкции LIKE.
Делал так:
$models=map_city::model()->findAllBySql('SELECT id,name FROM map_city WHERE name LIKE `'.mysql_escape_string($_GET['cname']).'%` ORDER BY name');
и так:
$models=map_city::model()->findAllBySql('SELECT id,name FROM map_city WHERE name LIKE `:name%` ORDER BY name',array(':name'=>$_GET['cname']));
И даже так:
$criteria=new CDbCriteria;
$criteria->condition='name LIKE `:name%`';
$criteria->params=array(':name'=>$_GET['cname']);
$models=map_city::model()->findAll($criteria);
Во всех случаях появляется ошибка:
CDbCommand failed to execute the SQL statement: SQLSTATE[42S22]: Column not found: 1054 Unknown column & #039;Вол%& #039; in & #039;where clause'
Кто-нибудь уже стакивался с этим? Как решили?
DARX
(Ioxanssen)
2
В одном из своих приложений с успехом использую LIKE с символом ‘%’:
$c = new CDbCriteria(array('condition'=>$field.' LIKE :value', 'params'=>array(':value'=>$v)))
Возможно, проблема в кодировке.
-
Попробуй установить параметр CDbConnection.charset в "utf8"
-
Файл контроллера тогда должен быть в UTF8 без BOM.
Rsol
(Slava Rudnev)
3
и где тут %? потом передается через $v?
Rsol
(Slava Rudnev)
4
Спасибо поборол:
$criteria=new CDbCriteria;
$criteria->condition='name LIKE :name';
$criteria->params=array(':name'=>$_GET['cname'].'%');
$models=map_city::model()->findAll($criteria);
DARX
(Ioxanssen)
5
Да, извиняюсь, самое главное забыл написать 