本篇内容主要讲解“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类型”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。