Eloquent的默认$属性不会发生变异

时间:2014-06-03 11:46:05

标签: laravel eloquent mutators

在保存到数据库之前,$ attributes属性中定义的默认值似乎没有被变异?

我有这个设置:

protected $attributes = array(
    'data' => array();    
);

public function getDataAttribute($value)
{
    return unserialize($value);
}
public function setDataAttribute($value)
{
    $this->attributes['data'] = serialize($value);
}

我得到的只是数据库字段,字面上填充了数组'和preg_replace错误。在覆盖的save()方法中指定默认属性后,它会发生变异。

任何人都可以确认这个和/或有建议吗?

感谢。

1 个答案:

答案 0 :(得分:0)

您正在为对象本身分配一个默认变量,该变量不在mutator的函数中。

最好的选择可能是在模型的构造函数中包含默认值,因此在创建对象时会调用它们并进行变异。我认为这样的事情应该有效:

function __construct($attributes = array()) {
    parent::__construct($attributes);
    $this->data = array();
}