我想从数据库中更新我的用户信息。我的格式是:
<form method="POST" action="{{ route('profile.update' , ['profile' => Auth::user()->id]) }}" class="form">
<div class="form-group BSinaBold ">
<input id="location" type="text" class="form-control" name="location" value="{{ Auth::user()->location }}" required autocomplete="location" autofocus>
</div>
</form>
在控制器中,我将其放入方法update
:
public function update(Request $request, $profile)
{
$validate_data = Validator::make(request()->all(),[
'location' => 'required'
])->validated();
$user = User::findOrFail($profile);
$user->update([
'location' => $validate_data['location']
]);
return back();
}
但现在的问题是,它没有更新location
。我的意思是没有出现错误,没有更新!
那么这里出了什么问题,我该如何解决这个问题?
我真的很感谢你们的任何想法或建议,
谢谢。
从提供的代码中,您正在更新来自$validate_data的数据,更新您的代码以使用请求数据
$user = User::find($profile);
$user->location = request('location');
$user->save();
代替手动创建验证器,您可以使用IlluminateHttpRequest
对象提供的validate
方法:
$validated = $request->validate([ 'location' => 'required' ]);
参考
然后你可以批量更新记录(注意你不需要检索记录来更新它,只需更新它):
User::where('id', $profile)
->update($validated);
参考
然而,在使用update
方法之前,您需要在您的模型类上指定fillable
或guarded
属性。
class User extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
// other fields here...,
'location',
];
}
参考