【问题标题】:Why a decimal value from MySQL is converted into/shown as integer?为什么来自 MySQL 的十进制值被转换为/显示为整数?
【发布时间】:2021-05-24 09:13:37
【问题描述】:

我的数据库包含一个名为Quotations 的表。此表有一个名为 Cost 的列,其数据类型为 decimal (10, 2)。值会按照我在列中的期望保存/更新,就像(25.754.3510.38 等)一样。

问题是每当我使用{{ $quotation->cost }} 显示信息时,所有小数 都打印为整数,例如(254,@987654330 @)。但是,如果我用{{ dd($quotation) }} 检查它,它会显示所有精确的十进制值,例如(25.754.3510.38 等)。

如果有人指出问题的根本原因,我将不胜感激。

【问题讨论】:

  • protected $casts => ['cost' => 'float'] 不起作用吗?
  • 考虑使用minor currency 存储您的成本/价格变量,而不是存储小数。简而言之,存储2575,而不是25.75,然后设置一个返回cost / 100getCostAttribute
  • 你试过了吗? <?php echo $quotation->cost; ?>{!! $quotation->cost !!}
  • 谢谢@JustCarty。 protected $casts => ['cost' => 'float'] 为我工作。

标签: php mysql laravel decimal


【解决方案1】:

问题解决了。感谢大家及时回复。

在解决之前,我实际上忽略了protected $casts = [ 'cost' => 'integer' ]。将 integer 替换为 float 解决了我的问题。

【讨论】:

  • 很高兴我的评论帮助解决了这个问题,您也可以将自己的答案标记为已接受。
【解决方案2】:

使用 {!! $quotation->cost !!}

【讨论】:

    【解决方案3】:

    显示小数时使用number_format函数

    【讨论】:

    • 已经尝试过了,但是输出是 25.00, 4.00, 10.00 而不是 25.75, 4.35, 10.38
    • 你能分享你的代码吗?模型、迁移以及您试图在其中显示这些值的控制器或视图?
    猜你喜欢
    • 1970-01-01
    • 2016-11-12
    • 2010-10-16
    • 2018-04-26
    • 1970-01-01
    • 2012-03-31
    • 2014-04-16
    相关资源
    最近更新 更多