即使在src/Database/StatementInterface.php
中,函数fetch
和fetchAll
也有以下注解:
$statement = $connection->prepare('SELECT id, title from articles');
$statement->execute();
print_r($statement->fetchAll('assoc')); // will show [0 => ['id' => 1, 'title' => 'a title']]
函数将ALL字段返回为string
,即使字段被定义为数字:
array(4) {
["lat"]=>
string(11) "38.49580000"
["lng"]=>
string(11) "-6.95301000"
["taken_at"]=>
string(19) "2021-03-30 16:24:30"
["id"]=>
string(1) "1
字段lat
和lng
被定义为DECIMAL(10,8)|(11,8)
,id
被定义为INTEGER
。CakePHP 4.3.1 [以及更早的版本]返回的字段为string
,这会破坏代码。
是我做错了什么,还是这是一个错误?
1条答案
按热度按时间1cosmwyk1#
您使用的是CakePHP提供的最低级别的数据库操作,这几乎是直接使用PDO进行操作,CakePHP不会在这里进行任何类型转换,您将获得的确切结果完全取决于您使用的DBMS和PDO驱动程序。
大多数驱动程序将返回字符串形式的所有内容,其他驱动程序会强制转换一些值,例如,使用Postgres可以获得整数,而使用MySQL可以获得字符串形式的所有内容。