2015-11-08 61 views
0

我用這個函數從形式獲取值並將其保存到數據庫:如何更改Laravel ORM保存功能?

public function save($request, $distID) 
{ 
    try { 
     $model = Dist::firstOrNew([ 'distID' => $distID ]); 
     foreach ($request as $key => $value) { 
      $model->{$key} = $value; 
     } 
     $model->save(); 
    } catch (\Exception $e) { 
     return false; 
    } 
    $lastInsertedId = DB::getPdo()->lastInsertId(); 
    $return_value = $lastInsertedId === "0" ? $distID : $lastInsertedId; 
    return $return_value; 
} 

一個表單輸入的是密碼字段,問題是,該值保存到DATABSE爲「pasword 「而不是作爲md5標註的值。該表單是一個配置文件編輯表單。

所以,問題是:如何將這個值保存爲一個MD5值,使用上面的代碼?

解決方案,我發現,並試圖思考:

-before嘗試,獲得請求密碼值,並與MD5替代

改變它 - 使用插入查詢

什麼是最好的解決方案?

回答

0

在你的模型像下面給出的一個創建mutator方法:

public function setPasswordAttribute($value) 
{ 
    $this->attributes['password'] = md5($value); 
} 

還有像創建event處理保存/創建等其他方式


注:爲什麼不使用Hash::make($value)呢?

+1

我仍然在學習Laravel,會試試看。 thx回答 –