这应该是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中tinyint(1)类型的处理逻辑错误,导致非0/1数值保存失败的问题,并提供了两种解决策略:调整字段类型为tinyint(2)或int(1),以确保数据正确存储。
1万+

被折叠的 条评论
为什么被折叠?



