在Laravel 5和MySQL中,双精度值点后仅保存两位数

时间:2018-07-05 05:26:03

标签: php mysql laravel laravel-5 double

我正在尝试使用Laravel在MySQl数据库中保存一个双精度值。但是仅保存点后的两位数字。点后有5位数字。例如,我的值为0.01197。但是当我保存在数据库中时,它仅显示0.01。其余的数字不会保存。

我正在将Laravel 5.6与PHP 7.1.2和MariaDB 10.1.29版本一起使用。这是我的数据库迁移代码:

public function up()
    {
        Schema::create('earnings', function (Blueprint $table) {
            $table->increments('id');
            $table->unsignedInteger('content_id');
            $table->foreign('content_id')->references('id')->on('contents');
          //this is the line for saving double value
            $table->double('income_in_usd', 10, 2);
            $table->timestamps();
        });
    }

这是用于将值保存到DB中的控制器代码:

$earning_id = DB::table('earnings')->insertGetID([
                                'month' => $request->month,
                                //here I am saving my double values
                                'income_in_usd' => $value['net_revenue'],
                                'exchange_rate' => $request->exchange_rate,
                                'income_in_bdt' =>  $value['net_revenue'] * $request->exchange_rate,
                                'content_id' => $content->id,
                            ]);

我尝试将表的列类型更改为float和十进制。但这没有用。有人可以在这里找到问题吗?提前致谢。

1 个答案:

答案 0 :(得分:3)

在laravel中:

双精度,精度为10位,小数点后两位。

因此,请更改您的迁移文件,例如:

$table->double('income_in_usd', 10, 5);