Бросок $ бросает, чтобы плавать, но только одно десятичное место - PullRequest
0 голосов
/ 04 мая 2018

В моей модели я добавил поле $casts, потому что мне нужно, чтобы Laravel дал мне поплавок. Моя база данных хранит ее в виде строки.

Итак, я сделал это в моей модели Score.php:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Score extends Model
{
    protected $fillable = [
        'value', 'comment'
    ];

    protected $casts = [
        'user_id' => 'int',
        'value' => 'float'
    ];

Это здорово, это бросает это. Однако это происходит слишком много десятичных знаков. Мне нужно, чтобы он занимал только 1 знак после запятой, до десятых долей.

Мои данные о конечной точке json выглядят так:

{
    "id": 2,
    "name": "Zed",
    "avatar_path": null,
    "score": {
        "id": 2,
        "value": 9.9000000000000003552713678800500929355621337890625,
        "comment": null,
        "user_id": 2,
        "created_at": "2018-05-03 07:03:37",
        "updated_at": "2018-05-03 07:03:41"
    }
},

Я хочу, чтобы 9.9...... был просто 9.9 Возможно ли это?

В своей схеме я сделал все правильно, чтобы создать его как $table->decimal('value', 3, 1):

    Schema::create('scores', function (Blueprint $table) {
        $table->increments('id');
        $table->decimal('value', 3, 1)->nullable(); //////// is this correct?

1 Ответ

0 голосов
/ 04 мая 2018

Как насчет создания мутатора / аксессора?

В вашей модели добавьте

public function getValueAttribute($value) {
    return round($value, 1);
}

для получения дополнительной информации посетите соответствующий Документы Laravel

Если вы на 100% уверены, что вам нужен только один десятичный знак, то подход к базе данных также хорош, но таким образом вы можете сохранить исходное значение для будущего использования и по-прежнему отвечать текущим желаемым форматом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...