Laravel - 模型类,重写主要方法

时间:2017-01-02 15:43:15

标签: php laravel laravel-5.3

我在DB上有一个包含压缩数据的BLOB字段。

我需要压缩/解压缩才能透明,用户类不需要写:

$objModel->field = gzencode($objModel->field);
$objModel->field = gzdecode($objModel->field);

为了保存我得到它,覆盖保存方法:

public function save($attributes[] = null) {
    $this->field = gzencode($objModel->field);
    return parent::save($attributes);    
}

但是当我从数据库中恢复数据时,我没有得到gzdecode“透明”,我已经尝试过覆盖启动,__ call,__ callstatic和其他,但是不成功。

有人能告诉我哪种方法从数据库中恢复数据并填充模型对象,以便我可以覆盖它并生成gzdecode吗?

非常感谢。

1 个答案:

答案 0 :(得分:5)

我不建议您覆盖Eloquent方法。只需使用accessor

public function getFieldAttribute($value)
{
    return gzdecode($value);
}

mutator

public function setFieldAttribute($value)
{
    $this->attributes['field'] = gzencode($value);
}