Php 如何防止插入mysql数据库时小数舍入

Php 如何防止插入mysql数据库时小数舍入,php,mysql,laravel,Php,Mysql,Laravel,我有一个奇怪的问题,每次我在数据库中插入或更新小数时,小数值都会四舍五入。例如,如果我插入51.4988814,它将四舍五入到51.00000000 小数点是纬度和经度值 我用来插入数据库的代码是: $centre = Centre::updateOrCreate( ['wordpress_id' => $centre->ID], [ 'name' => $centre->post_title, 'postcode' =&

我有一个奇怪的问题,每次我在数据库中插入或更新小数时,小数值都会四舍五入。例如,如果我插入
51.4988814
,它将四舍五入到
51.00000000

小数点是纬度和经度值

我用来插入数据库的代码是:

$centre = Centre::updateOrCreate(
    ['wordpress_id' => $centre->ID],
    [
        'name' => $centre->post_title, 
        'postcode' => $centre->acf->postcode,
        'lat' => 51.4988814,
        'lng' => -0.1415936
    ]
);

表迁移如下所示:

Schema::create('centres', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->integer('wordpress_id')->unsigned();
    $table->string('name');
    $table->string('postcode')->nullable();
    $table->decimal('lat', 10, 8);
    $table->decimal('lng', 11, 8);
    $table->timestamps();
});

修复此问题的一次尝试是编辑我的
php.ini
,并将
精度=
更改为更高的数字(25),然后重新启动服务器,但这并没有纠正此问题

我还尝试在数据库中使用float而不是decimal

我也试过了


'lat' => (float)51.4988814,
'lng' => (float)-0.1415936

在updateOrCreate函数中

我现在没有主意了

编辑:

我已经添加了
SHOW CREATE TABLES centres

CREATE TABLE `centres` (
 `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
 `wordpress_id` int(10) unsigned NOT NULL,
 `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
 `postcode` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
 `lat` decimal(10,8) NOT NULL,
 `lng` decimal(11,8) NOT NULL,
 `created_at` timestamp NULL DEFAULT NULL,
 `updated_at` timestamp NULL DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

这回答了你的问题吗?仔细检查你的中心模型,确保在这些字段上没有突变或其他任何东西。你打算用这些值做任何数学运算吗?如果没有,另存为text…@RussJ-他们已经在迁移中设置了比例和精度:
$table->decimal('lat',10,8)
10
是精度,
8
是刻度。我知道你已经分享了你的迁移,这很好,但只是想再次检查一下,你是否也可以提供
SHOW CREATE TABLE centres
输出?这是否回答了你的问题?仔细检查你的中心模型,确保在这些字段上没有突变或其他任何东西。你打算用这些值做任何数学运算吗?如果没有,另存为text…@RussJ-他们已经在迁移中设置了比例和精度:
$table->decimal('lat',10,8)
10
是精度,
8
是刻度。我知道您已经共享了迁移,这很好,但请再次检查,您是否也可以提供
显示创建表格中心
输出?