Laravel 8不从数据库更新信息



我想从数据库中更新我的用户信息。我的格式是:

<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方法之前,您需要在您的模型类上指定fillableguarded属性。

class User extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
// other fields here...,
'location',
];
}

参考

相关内容

  • 没有找到相关文章