在我的模型中,我添加了$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?
答案 0 :(得分:2)
如何创建mutator / accessor?
在您的模型中添加
public function getValueAttribute($value) {
return round($value, 1);
}
获取额外信息,请访问相关的Laravel docs
如果您100%确定只需要一个小数位,那么数据库方法也不错,但这样您就可以存储原始值以供将来使用,并仍然以当前所需的格式进行响应