CakePHP: tinyint(1)类型引入的问题

这应该是CakePHP的一个bug。正常情况下,tinyint(1)应该被当作显示宽度为1的整数(0,255),那么通常是0~9

不过在CakePHP中tinyint(1)被当作了boolean处理。

检查dbo_mysql.php代码,你会发现如下的处理逻辑

        if (($col == 'tinyint' && $limit == 1) || $col == 'boolean') {
            return 'boolean';
        }


这样如果没有意识到CakePHP所作的特殊处理,在往tinyint(1)类型的字段保存非0/1(false/true)数值时,会导致错误。

解决方法取决于设计的本意如何,如果的确想存入非boolen整形数据,那么应该把该字段定义成tinyint(2)或者int(1)。


iefreer

你可能感兴趣的:(cakephp)