有遇到过类似从MySQL数据库中,不需要用特定的类型转化,比如无需操作CAST和CONVERT就能得到查询的结果集全部是字符串的情况吗?
/** * 获取系统中该月结算单数据 * * @param $from * @param $to * @return array|CDbDataReader|mixed */ public function getTargetData($from, $to) { $res = $this->targetDb->createCommand(" SELECT platform, commission_product_total_amount, bill_month, refund_total_amount, fee_settlement, anchor_source, fee_adjust_amount, commission_product_number, refund_sku_number, bill_sn, buyer_number, commission_sku_total_amount, fee_total_amount, anchor_uid, anchor_nickname FROM `{$this->targetTable}` WHERE bill_month = " . date('Ym', strtotime($from)) . " ")->queryAll(); $this->changeType($res); return $res; }
目前是做一次循环,觉得太过多余
/** * 因接口返回值问题,造成数据类型不一致,比如返回的金额为字符或浮点格式, * 但是mysql存储为整型等,故将mysql查询后的数据全部转为字符串 * * @param array $list */ protected function changeType(&$list = []) { foreach ($list as &$value) { foreach ($value as $key => $val) { $value[$key] = strval($val); } } }
用PDO的话:
PDO::ATTR_STRINGIFY_FETCHES
,例:Yii1框架是可以直接设置PDO属性的
然后继续查询就可以得到完全的字符串描述,当然不般是不会有这种需求的,不推荐强制转化字段的类型。