iT邦幫忙

0

[Laravel] Accessors & Mutators

  • 分享至 

  • xImage
  •  

前言

當我們想在資料存進資料庫前的最後一刻,或是取出資料庫後的第一時間對資料做處理,可以在 Model 裡寫 Mutator 和 Accessor。 官網舉一個加密解密的例子,蠻好理解他的作用的。
今天用一個大家都有的 User Model 做練習,將 name 全部轉為小寫後存進資料庫,取出時,全部轉成大寫。很明顯的,這個練習本身沒什麼意義XDD。開始 trytry 吧!

用法

User Model

加入下面兩個 function:

public function setNameAttribute($value) // Mutator 存進資料庫前作用
{
    $this->attributes['name'] = strtolower($value);
}
public function getNameAttribute($value) // Accessor 從資料庫取出後作用
{
    return $this->attributes['name'] = strtoupper($value);
}

注意:function 的名稱是依照欄位名稱來命名,如 set+欄位名稱(upper camel大寫駝峰)+Attribute。 如果 欄位名稱是 user_name 那 function 名稱就要改成 setUserNameAttribute。

測試

  1. 新增一筆 user 資料
    name:ABCHAHA
    password:sasawee
  2. 查看資料庫,確實轉為小寫
    資料庫截圖
  3. 撈出 user
    不論name輸入的大小寫為何,在進到資料庫比對前都會轉成小寫,所以沒關係。用 name 和 password 撈出 user後,將 name 轉成大寫再 return 出來。
    postman

感謝 Ray 大!


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言