数字类型的字段返回错误值

问题描述

版本:

  • 带有 PDO 的 Firebird 3.0
  • Laravel 7

我正在使用 Eloquent 并且我正在使用包连接数据库 https://packagist.org/packages/harrygulliford/laravel-firebird

OBS:在 Windows Serve 中运行良好,但在 Linux 中不行(在 CentOS 7 和 Ubuntu Server 20.04LTS 中)。

我正在将 Laravel 与 Firebird 一起使用,但我遇到了返回错误值的 NUMERIC 类型字段的问题。

示例: 应该返回 190,65 的查询返回 0.0001。

这是 sql DDL:

Item::selectRaw("CODIGO,DESCRICAO,PRECOVAREJO,PRECOATACADO,PRECOESPECIAL")->get(); 

这是json的返回:

{ "data": [ { "CODIGO": "123456","DESCRICAO": "DESCRIPTION EXAMPLE","PRECOVAREJO": "0.0001","PRECOATACADO": "0.0001","PRECOESPECIAL": "0.0001" } ] } 

创建表:

CREATE TABLE ITENS ( PRECOVAREJO NUMERIC(15,3),PRECOATACADO NUMERIC(15,PRECOESPECIAL NUMERIC(15,CODIGO VARCHAR(8) NOT NULL,DESCRICAO VARCHAR(80) );

@H_404_36@

Image example return using Postman

@Mark Rotteveel 这是 Eloquent Laravel 构建的查询

array:2 [ 0 => array:3 [ "query" => "select count(*) as "aggregate" from "ITENS" where "ITENS"."DATACANCELAMENTO" is null" "bindings" => [ ] "time" => 33.17 ] 1 => array:3 [ "query" => """select CODIGO,PRECOESPECIAL from "ITENS" where "ITENS"."DATACANCELAMENTO" is null order by " CODIGO" asc 只获取前 10 行 """ "bindings" => [] "time" => 8.39 ] ]

这是预期的回报 Image return expected

解决方法

我通过将 PHP 版本更新到 7.4.16 版本解决了这个问题。 问题在7.4.0版本解决

我还在 /etc/php.d/30-pdo_firebird.ini 中创建了一个文件,内容为:extension = pdo_firebird。

https://www.php.net/ChangeLog-7.php#7.4.0 解决错误 https://bugs.php.net/bug.php?id=65690

感谢所有帮助过的人