【问题标题】:How to alter Laravel ORM save function?如何更改 Laravel ORM 保存功能?
【发布时间】:2015-11-08 18:47:56
【问题描述】:

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

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 替代方法进行更改

-使用插入查询

什么是最好的解决方案?

【问题讨论】:

    标签: laravel orm eloquent


    【解决方案1】:

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

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

    还有其他方法,例如创建 event 处理程序以进行保存/创建等。


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

    【讨论】:

    • 我还在学习 Laravel,会尝试一下。谢谢解答
    猜你喜欢
    • 2019-09-16
    • 1970-01-01
    • 2015-12-11
    • 2015-04-12
    • 1970-01-01
    • 2023-03-24
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多