如何改变Laravel ORM保存功能?

时间:2015-11-08 18:47:56

标签: laravel orm eloquent

我使用此函数从表单中获取值并将其保存到数据库:

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;
}

其中一个表单输入是密码字段,问题是将该值作为“密码”保存到数据库,而不是md5的编写值。表单是个人资料编辑表单。

所以问题是:如何使用上面的代码将该值保存为md5值?

我发现的解决方案,并考虑尝试:

- 在尝试之前,获取请求密码值并使用md5替换

进行更改

- 使用插入查询

最佳解决方案是什么?

1 个答案:

答案 0 :(得分:0)

在您的模型中创建一个mutator方法,如下所示:

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

还有其他方法可以创建event处理程序来保存/创建等。

注意:为什么不使用Hash::make($value)