温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Yii2数据库的INT类型怎么转换为PHP类型

发布时间:2021-09-03 19:15:58 来源:亿速云 阅读:171 作者:chen 栏目:大数据

本篇内容主要讲解“Yii2数据库的INT类型怎么转换为PHP类型”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Yii2数据库的INT类型怎么转换为PHP类型”吧!

Yii2对于数据库的int类型转换到php类型时,会根据server 环境,决定是integer还是string

如果是32位服务器PHP_INT_SIZE=4, 64位服务器,PHP_INT_SIZE=8.

也就是说,如果DB的int类型超过了PHP的int最大值,则会转为string。

if ($column->type === 'bigint') {
    return PHP_INT_SIZE === 8 && !$column->unsigned ? 'integer' : 'string';
} elseif ($column->type === 'integer') {
    return PHP_INT_SIZE === 4 && $column->unsigned ? 'string' : 'integer';
}

源码:yii2\db\Schema.php

/**
 * Extracts the PHP type from abstract DB type.
 * @param ColumnSchema $column the column schema information
 * @return string PHP type name
 */
protected function getColumnPhpType($column)
{
    static $typeMap = [
        // abstract type => php type
        self::TYPE_TINYINT => 'integer',
        self::TYPE_SMALLINT => 'integer',
        self::TYPE_INTEGER => 'integer',
        self::TYPE_BIGINT => 'integer',
        self::TYPE_BOOLEAN => 'boolean',
        self::TYPE_FLOAT => 'double',
        self::TYPE_DOUBLE => 'double',
        self::TYPE_BINARY => 'resource',
        self::TYPE_JSON => 'array',
    ];
    if (isset($typeMap[$column->type])) {
        if ($column->type === 'bigint') {
            return PHP_INT_SIZE === 8 && !$column->unsigned ? 'integer' : 'string';
        } elseif ($column->type === 'integer') {
            return PHP_INT_SIZE === 4 && $column->unsigned ? 'string' : 'integer';
        }

        return $typeMap[$column->type];
    }

    return 'string';
}

到此,相信大家对“Yii2数据库的INT类型怎么转换为PHP类型”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI