Как проверить уникальный адрес электронной почты и уникальное имя в обновлении laravel? - PullRequest
1 голос
/ 03 мая 2020

Это мой код:

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 .... ?))

Ответы [ 2 ]

2 голосов
/ 03 мая 2020

Ошибка, вероятно, связана с $user = User::find($user);.

Поскольку вы используете Привязка модели маршрута , вам не нужно загружать 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();
}
0 голосов
/ 03 мая 2020

Функция проверки ожидает первый параметр, поскольку входной массив запроса не является объектом запроса. Следующий код будет работать нормально.

$this->validate (request()->all(), $rules)

Вы также можете передать третий параметр для сообщений проверки.

...