【问题标题】:Yii2 - ActiveRecord - type castingYii2 - ActiveRecord - 类型转换
【发布时间】:2016-10-16 20:48:27
【问题描述】:

在yii2 activerecord中,mysql不支持float,double,decimal数据类型! (或者我错了) 当我访问此列时(float,double,decimal),yii2 返回字符串。

如何将mysql的浮点数、双精度数、十进制数据类型转换为php浮点数?

mytable(id int, f1 float, f2 double, f3 decimal(10,2))

例如在 activerecord 类中:

public function filters(){
   // return [['f1','f2','f3'] => 'float', ...];
}

【问题讨论】:

  • 如何准确检索数据?
  • 我认为你的意思是:$f1_float_but_string = mytable::findOne(1)->f1

标签: php mysql activerecord pdo yii2


【解决方案1】:

Yii 返回无符号整数和浮点数的字符串。这是因为通常 DBMS 类型可以代表的不仅仅是 PHP,而且我们希望保持精度。

【讨论】:

    【解决方案2】:

    我对 Yii 的内部结构一无所知,但我可以回答 mysql 和 PDO。

    首先,对于decimal 类型,您只能得到字符串,因为它正是这种数据类型的重点。

    对于其余部分,要使 PDO 从 mysql 返回具有相应类型的 int 和 double 值,您必须确保 both mysqlnd-based driver is installed and emulation mode is turned off。鉴于此,PDO 将从准备好的语句中返回正确的数据类型。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    相关资源
    最近更新 更多