mysql 查询decimal去掉多余零 0+cast(field as char)

  • thinkphp指定查询字段方法增加$format参数
/**
     * 指定查询字段
     * @access public
     * @param mixed $field 字段信息
     * @param mixed $format 需要去掉多余0的 decimal字段
     * @return $this
     */
    public function field($field,$format=null)
    {
        if (empty($field)) {
            return $this;
        } elseif ($field instanceof Raw) {
            $this->options['field'][] = $field;
            return $this;
        }

        if (is_string($field)) {
            if (preg_match('/[\<\'\"\(]/', $field)) {
                return $this->fieldRaw($field);
            }

            $field = array_map('trim', explode(',', $field));
        }

        if (true === $field) {
            // 获取全部字段
            $fields = $this->getTableFields();
            $field  = $fields ?: ['*'];
        }

        if (isset($this->options['field'])) {
            $field = array_merge((array) $this->options['field'], $field);
        }
        if ($format) {
            $castField = [];
            if(is_string($format)) $format = explode(',',$format);
            if(is_array($format)){
                foreach($format as $v){
                    $asField = str_replace(".","_",$v);
                    $castField[] = '0+cast('.$v.' as char) AS '.$asField;
                }
            }
            $field = array_merge($field,$castField);
        }
        $this->options['field'] = array_unique($field);
        return $this;
    }
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐