Yii addInCondition с поплавками: Как? и почему addInCondition ('column', array (1.1, 1.3)) не работают?

Как addInCondition с поплавками?

Я много пробовал.

Это работает нормально:

$criteria=new CDbCriteria(); $criteria->addInCondition('order_id',array(36907)); $tasks=OrderTask::model()->findAll($criteria); 

В моем случае он возвращает 4 модели:

Но если я попробую

 $criteria=new CDbCriteria(); $criteria->addInCondition('order_id',array(36907)); $criteria->addInCondition('step',array(3.20)); $tasks=OrderTask::model()->findAll($criteria); 

Или

 $criteria=new CDbCriteria(); $criteria->addInCondition('step',array("3.20")); $tasks=OrderTask::model()->findAll($criteria); 

Или

 $criteria=new CDbCriteria(); $criteria->addInCondition('step',array('3.2')); $tasks=OrderTask::model()->findAll($criteria); 

Результаты пустые.

Согласно журналу, запрос:

system.db.CDbCommand.query (SELECT * FROM orders_tasks t WHERE step =: ycp1. Связано с: ycp1 = 3.2)

Этот запрос в phpmyadmin возвращает 5360 строк

 SELECT * FROM `orders_tasks` `t` WHERE step = 3.20 

Эти запросы в phpmyadmin возвращают 0 строк

 SELECT * FROM `orders_tasks` `t` WHERE step = '3.20' SELECT * FROM `orders_tasks` `t` WHERE step = '3.2' SELECT * FROM `orders_tasks` `t` WHERE step = "3.20" 

Это попытка

 $criteria=new CDbCriteria(); $criteria->addInCondition('step',array("3,20")); $tasks=OrderTask::model()->findAll($criteria); 

возвращает модели с шагом = 3 ИЛИ 20

Этот запрос в phpmyadmin возвращает строки с шагом = 3 ИЛИ 20

 SELECT * FROM `orders_tasks` `t` WHERE step = '3,20' 

Итак, как addInCondition с поплавками?

Подробности, например

поле stepfloat(8,2)

Сброс таблицы Sql:

 CREATE TABLE IF NOT EXISTS `orders_tasks` ( `task_id` int(11) NOT NULL AUTO_INCREMENT, `order_id` int(11) NOT NULL, `step` float(6,2) NOT NULL, `done` int(1) NOT NULL DEFAULT '0', PRIMARY KEY (`task_id`), KEY `order_id` (`order_id`), KEY `step` (`step`), KEY `orderstep` (`order_id`,`step`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ; 

Версия Yii: 1.1.10

Related of "Yii addInCondition с поплавками: Как? и почему addInCondition ('column', array (1.1, 1.3)) не работают?"

 DROP TABLE IF EXISTS `prefix_test`; CREATE TABLE IF NOT EXISTS `prefix_test` ( `task_id` int(11) NOT NULL AUTO_INCREMENT, `order_id` int(11) NOT NULL, `step` float(6,2) NOT NULL, `done` int(1) NOT NULL DEFAULT '0', PRIMARY KEY (`task_id`), KEY `order_id` (`order_id`), KEY `step` (`step`), KEY `orderstep` (`order_id`,`step`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ; INSERT INTO `prefix_test` VALUES (1,36907,3.20,0); INSERT INTO `prefix_test` VALUES (2,36907,3.21,0); INSERT INTO `prefix_test` VALUES (3,37907,4.13,0); $criteria=new CDbCriteria(); $criteria->addInCondition('order_id',array(36907)); $criteria->addInCondition('step',array(3.20)); $tests=Test::model()->findAll($criteria); echo "Rows: ".count($tests)."<br>"; #Returns Rows: 0 

Запрос в журналах Yii

 SELECT * FROM `prefix_test` `t` WHERE (order_id=:ycp0) AND (step=:ycp1). Bound with :ycp0=36907, :ycp1=3.2 

Реальный запрос в журналах MySql

 SELECT * FROM `prefix_test` `t` WHERE (order_id=36907) AND (step='3.2') 

Это поможет вам решить проблему

 ALTER TABLE `prefix_test` CHANGE `step` `step` decimal(10,2) NOT NULL; 

После этого ваш запрос вернется

 #Returns Rows: 1