簡體   English   中英

Laravel - 模型類,覆蓋主要方法

[英]Laravel - Model class, overriding main methods

我的數據庫中有一個 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“透明”,我嘗試覆蓋 boot、__call、__callstatic 等,但沒有成功。

有人能告訴我哪種方法可以從數據庫中恢復數據並填充模型對象,以便我可以覆蓋它並進行 gzdecode 嗎?

我不建議你重寫 Eloquent 方法。 只需使用訪問器

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

mutator

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM