你如何使用setColumnAttribute与update()?

时间:2014-04-22 08:02:47

标签: laravel eloquent

我尝试在保存之前删除属性上的非数字字符,但不保存新值。

我的模型看起来像这样:

class Model extends \Eloquent {
    public function setColumnAttribute($value) {
        $value = (int)preg_replace('/[^0-9]/', '', $value);

        return $value;
    }
}

如果我在其中添加dd($value),那么该方法会运行转储。

我用这个更新模型:

Model::find($id)->update($attributes);

为什么不保存setColumnAttribute方法给出的值?我错过了什么?

1 个答案:

答案 0 :(得分:0)

通过搜索eloquent mutator我发现你必须将其插入$this->attributes数组而不是返回值。

class Model extends \Eloquent {
    public function setColumnAttribute($value) {
        $value = (int)preg_replace('/[^0-9]/', '', $value);

        $this->attributes['column'] = $value;
    }
}