Eloquent的默认$属性不会变突变
题
似乎在保存到数据库之前,$属性属性中定义的默认值不会被突变?
我有这个设置:
protected $attributes = array(
'data' => array();
);
public function getDataAttribute($value)
{
return unserialize($value);
}
public function setDataAttribute($value)
{
$this->attributes['data'] = serialize($value);
}
.
所有我得到的数据库字段填充了字面上的'数组'和preg_replace错误。在将recraddener save()
方法中指定默认属性时,它确实变突。
任何人都可以确认这个和/或有建议吗?
谢谢。
解决方案
您在对象本身上分配默认变量,该变量超出了utator的函数。
最佳选项可能会在模型的构造函数中包含默认值,因此在创建对象时调用和突变它们。我认为这样的事情应该有效:
function __construct($attributes = array()) {
parent::__construct($attributes);
$this->data = array();
}
. 不隶属于 StackOverflow