Laravel 将十进制视为字符串

ale*_*oem 5 laravel eloquent

我正在尝试进行下一个雄辩的查询

$result = $result->where('money','>=',(float)$moneyFilter);
Run Code Online (Sandbox Code Playgroud)

我的数据库中的货币列是 DECIMAL(11,2),当我运行查询时它返回一个空数组,当我查看 php artisan tinker 并看到列货币时,它是一个字符串值“11.1”。

我想过滤 $result 集合以使其值超过 $moneyFilter。

谢谢

Mah*_*esi 2

您需要在模型中定义哪些字段需要转换为原始属性。

  protected $casts = ['my_decimal' => 'float'];
Run Code Online (Sandbox Code Playgroud)

这里有一个非常好的解释:

https://mattstauffer.com/blog/laravel-5.0-eloquent-attribute-casting/

文档中也有解释:

https://laravel.com/docs/5.5/eloquent-mutators#attribute-casting

  • 如果您不关心值的准确性,则将“decimal”值转换为“float”只是一个好的解决方案 (2认同)