and*_*ats 4 php record laravel
我在使用 laravel 更新数据库中的单个记录时遇到问题。
当我运行此方法并仅给 requestparams 提供“名称”时,数据库中的其他字段将变为空白。如何保留 requestparams 中未指定的值?。
public function update(Request $request, $id)
{
$user = User::find($id);
if(!is_null($user)){
$user->name = $request->input('name');
$user->email = $request->input('email');
$user->password = $request->input('password');
$user->save();
}else{
$data = array('msg' => 'The user, you want to update, does not exist', 'error' => true);
echo json_encode($data);
}
}
Run Code Online (Sandbox Code Playgroud)
您可以直接对请求输入使用更新方法。这只会更新提供的输入。
$user->update($request->only(['name', 'email', 'password']));
Run Code Online (Sandbox Code Playgroud)
不过要注意的事情很少。您正在尝试直接从输入中更新密码。这是一个不好的做法,可能是错误的,因为 laravel 默认使用 bcrypt 来存储密码。其次,确保您$fillable在模型中设置了属性以防止批量分配。
protected $fillable = [
'name', 'email', 'password'
];
Run Code Online (Sandbox Code Playgroud)
您也可以使用 mutator 像这样散列密码。
public function setPasswordAttribute($value)
{
$this->attributes['password'] = bcrypt($value);
}
Run Code Online (Sandbox Code Playgroud)