我有一个模型将十进制存储为整数,当使用mutator从数据库读取/写入时,这些模型应该被转换:
public function getPrice($value)
{
return $value / 100;
}
public function setPrice($value)
{
$this->attributes['price'] = round($value, 2) * 100;
}
但是,从不调用变异器。
例如,如果我create/insert/save
等:
PriceHistory::create(['price' => 1234.25]);
我收到此错误:
Illuminate\Database\QueryException with message 'SQLSTATE[22P02]:
Invalid text representation: 7 ERROR:
invalid input syntax for integer:
"1234.25" (SQL: insert into "price_history" ("price") values (1234.25))'
我在这里做错了什么?
答案 0 :(得分:1)
来自docs:
定义访问者
要定义访问者,请在模型上创建获取 Foo 属性方法 其中Foo是您希望访问的列的“驼峰”名称。
所以,就像这样:
public function getPriceAttribute($value)
{
return $value / 100;
}
public function setPriceAttribute($value)
{
$this->attributes['price'] = round($value, 2) * 100;
}
答案 1 :(得分:0)
访问者/ mutator的名称必须包含Attribute
,就像the docs一样。放手一搏:
public function getPriceAttribute($value)
{
return $value / 100;
}
public function setPriceAttribute($value)
{
$this->attributes['price'] = round($value, 2) * 100;
}