獲取器和修改器:
修改器:
就是當你往數據庫寫數據時,你想對寫入的數據進行處理 然后再寫入數據庫。
比如,你想當為 換模完成時間(times) 這個字段 賦值時,計算 實際換模時長(long) 這個字段的值。
你就在有該字段的表 的模型里,加上setTimesAttribute() 方法;
public function setTimesAttribute($value){ //這里的$value 就是 給times賦值時 傳過來的值。
$this->attributes['times'] = $value; // attributes 取的是 白名單在 times 之前的 字段的值。 即跟times 一起傳到數據庫的值。但是不是所有的都能取到,只能取到按照白名單的順序,排在times 字段之前的值。
if( isset($this->attributes['id']) ){ //當創建時,沒有id,更新的時候有id ,(即,創建記錄的時候雖然times 被賦值,該方法被執行,但是沒有id, 更新的時候有id ,可以根據有無id 來判斷是新建還是更新)
$this->attributes['long'] = floor((strototime($value) - strtotime($this->attributes['call'])) % 86400 / 60);
}
$this->user //還可以取user 模型里的數據
}
當我們為模型上的:times賦值時該修改器會被自動調用:
修改器里的(set) $this->attributes 默認的,獲取的是修改的那條數據。
$this->user 獲取的是 user 表里的數據
這里$this->attributes 取的值是根據前台傳過來的值,然后對應白名單里字段的順序對應過來的,有可能遺漏