Как предотвратить округление десятичных дробей при вставке в базу данных mysql - PullRequest
1 голос
/ 09 января 2020

У меня странная проблема, из-за которой каждый раз, когда я вставляю или обновляю десятичные дроби в моей базе данных, десятичные значения округляются. Например, если я вставлю 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...