У меня странная проблема, из-за которой каждый раз, когда я вставляю или обновляю десятичные дроби в моей базе данных, десятичные значения округляются. Например, если я вставлю 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
и измените precision=
на большее число (25) и перезапустите сервер, но это не устранило проблему.
Я также попытался использовать float вместо десятичной в базе данных.
Я также пытался
'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