首页 > 解决方案 > Laravel 7.x:PDOException:SQLSTATE [22P02]:无效的文本表示:7 错误:bigint 类型的输入语法无效

问题描述

我正在使用 laravel,有时将非常大的数字与 postgres 结合使用。在有问题的情况下,我试图将数据存储在此表中。

        Schema::create('address_statistics', function (Blueprint $table) {
            $table->id();
            $table->string('address')->nullable()->index();
            $table->bigInteger('transaction_count');
            $table->bigInteger('balance');
            $table->dateTime('first_transaction');
            $table->dateTime('last_transaction');
        });

示例(伪代码):


$testnumber = "13159750.11391604"; //comes from an API as string
$this->addressStatistic->balance = floatval($response["result"]["amount"]) * 100000000;
$this->addressStatistic->save();

在这种情况下,我收到一个错误:

PDOException: SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for type bigint: "1.3159750113916E+15"

有没有办法绕过它?

标签: laravelpostgresqlbigint

解决方案


在插入数据库之前,我使用 inval() 显式解析了数字。现在它按预期工作!


推荐阅读