php - Laravel - 模型类,覆盖主要方法

标签 php laravel laravel-5

我的数据库中有一个包含压缩数据的 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?

最佳答案

我不建议您重写 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/

相关文章:

php - 从 MySQL 数据库构建一个表,然后能够在不重新加载页面的情况下过滤该表

php - Javascript 将文本从数据库转换为超链接

php - 使用Carbon将日期转换为laravel中的毫秒

javascript - 在输入内容后,如何从字符串中提取最后一个字符?

javascript - 想要使用 ajax 将事件状态从 1 更新为 0

php - 使用 MySQL 和 PHP 转换 CSV 文件结构

php - Laravel 使用可为空的外键违反完整性约束

laravel - 如何查看 Laravel 中安装了哪个 Vue 版本以及如何更新?

laravel - 测试用例在通过测试用例上传文件时删除原始文件

php - 从集合中获取最高值(value)