cakephp - >fetch将所有字段作为字符串返回

wh6knrhe  于 2022-11-24  发布在  PHP
关注(0)|答案(1)|浏览(161)

即使在src/Database/StatementInterface.php中,函数fetchfetchAll也有以下注解:

$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

字段latlng被定义为DECIMAL(10,8)|(11,8)id被定义为INTEGER。CakePHP 4.3.1 [以及更早的版本]返回的字段为string,这会破坏代码。
是我做错了什么,还是这是一个错误?

1cosmwyk

1cosmwyk1#

您使用的是CakePHP提供的最低级别的数据库操作,这几乎是直接使用PDO进行操作,CakePHP不会在这里进行任何类型转换,您将获得的确切结果完全取决于您使用的DBMS和PDO驱动程序。
大多数驱动程序将返回字符串形式的所有内容,其他驱动程序会强制转换一些值,例如,使用Postgres可以获得整数,而使用MySQL可以获得字符串形式的所有内容。

相关问题