我的数据库中有一个包含压缩数据的 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?p>
最佳答案
我不建议您重写 Eloquent 方法。只需使用 accessor :
public function getFieldAttribute($value)
{
return gzdecode($value);
}
和mutator :
public function setFieldAttribute($value)
{
$this->attributes['field'] = gzencode($value);
}
关于php - Laravel - 模型类,覆盖主要方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41429617/