【问题标题】:Laravel update formLaravel 更新表单
【发布时间】:2020-07-09 06:58:49
【问题描述】:

您好,我正在使用 laravel,我正在为用户、卖家和其他类型的用户使用特定的方法。

因此,如果我要更新一种用户形式(它们包含:伪、密码,如果卖方已支付广告另一个字段),如果该字段为空,则密码已更新,我不想要这个,我可以'不显示密码,因为 laravel 使用 bcrypt 作为哈希密码,我们只能验证哈希是否与以纯文本形式输入的密码相同。

我的问题非常具体,我有解决方案,但没有同样的问题。有什么解决办法吗?

 public function update(Request $request,$id)
{
    $inputs = $request->all();
    dd($inputs);
    $seller = Seller::find($id);
    $seller->pseudo = $inputs['pseudo'];
    $seller->password = Hash::make($inputs['password']);
    $seller->token_related_product = $inputs['token_related_product'];
    $seller->save();
    return view('backend.home');
}

【问题讨论】:

  • 那么,您的问题到底是什么?您不想在模型更新时更新密码吗?
  • 你好@Dan 没错。我想要如果该字段不为空但如果为空我不希望密码为空
  • 然后从您的方法中删除 $seller->password 分配。
  • 我知道这一点,但我在帖子中告诉过这是 bcrypt 的一个特定问题,但如果任何卖家想要更改我需要这个字段,但它是一个解决方案但不是最好的,如果你愿意的话是我的如果我不能这样做,最后的解决方案

标签: php mysql laravel hash bcrypt


【解决方案1】:

如果您只想在password 字段已填满的情况下设置新密码,只需将该字段的值与空字符串进行比较即可。如果不为空,则将密码哈希并保存到数据库中,否则跳过此步骤。

public function update(Request $request,$id)
{
    $inputs = $request->all();

    $seller = Seller::find($id);
    $seller->pseudo = $inputs['pseudo'];

    if ($request->filled('password')) {
        $seller->password = Hash::make($inputs['password']);
    }

    $seller->token_related_product = $inputs['token_related_product'];
    $seller->save();

    return view('backend.home');
}

【讨论】:

  • 此解决方案将密码设置为 null ;) 但这是个好主意。
  • 我留下了 $seller->password,并且我已经创建了一个由管理员重置密码的路由
猜你喜欢
  • 1970-01-01
  • 2020-01-29
  • 1970-01-01
  • 2021-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
相关资源
最近更新 更多