floats で 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);
step=3 または 20 のモデルを返します
phpmyadmin のこのクエリは、step=3 OR 20 の行を返します
SELECT * FROM `orders_tasks` `t` WHERE step = '3,20'
addInCondition
では、フロートを使用するにはどうすればよいでしょうか。
詳細、例えば
step
フィールドはfloat(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