如何验证update laravel中的唯一电子邮件和唯一名称?
这是我的代码:如何验证update laravel中的唯一电子邮件和唯一名称?,laravel,laravel-validation,Laravel,Laravel Validation,这是我的代码: public function update(User $user) { $this->validate(request(), [ 'name' => 'required|min:3|max:50|unique:users,name,' . $user->id, 'email' => 'required|email|max:255|unique:users,email,' . $user->id,
public function update(User $user)
{
$this->validate(request(), [
'name' => 'required|min:3|max:50|unique:users,name,' . $user->id,
'email' => 'required|email|max:255|unique:users,email,' . $user->id,
'origin' => 'max:50',
'about' => 'max:5000',
]);
$user = User::find($user);
$user->name = request('name');
$user->original = request('origin');
$user->email = request('email');
$user->about = request('about');
$user->save();
return back();
}
我得到了这个错误:
Illuminate\Database\QueryException
SQLSTATE[HY093]: Invalid parameter number (SQL: select * from .... ?))
验证函数expect第一个参数作为请求输入数组而不是请求对象。下面的代码可以正常工作
$this->validate(请求()->all(),$rules)
您还可以传递验证消息的第三个参数。错误可能源于
$user=user::find($user)代码>
由于您正在使用,因此不需要再次加载用户
:
public function update(User $user)
{
$this->validate(request(), [
'name' => 'required|min:3|max:50|unique:users,name,' . $user->id,
'email' => 'required|email|max:255|unique:users,email,' . $user->id,
'origin' => 'max:50',
'about' => 'max:5000',
]);
$user->name = request('name');
$user->original = request('origin');
$user->email = request('email');
$user->about = request('about');
$user->save();
return back();
}
控制器中的$this->validate(…)
期望第一个参数是\illumb\Http\Request
的实例。谢谢,我删除了这一行$user=user::find($user);解决了我的问题