Мне нужно иметь возможность обновлять пользователя, не вводя его пароль в форму. Я выполнил правило проверки, но получаю сообщение об ошибке: SQLSTATE [23000]: Нарушение ограничения целостности: 1048 Столбец «пароль» не может быть пустым. В противном случае обновление работает.
Это мой контроллер:
public function update(Requests\UserUpdateRequest $request, $id)
{
User::findOrFail($id)->update($request->all())->except('password');
return redirect('backend/users')->with("message", "User was updated");
}
Это UserUpdateRequest:
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required',
'email' => 'email|required|unique:users,email,' . $this->route('user'),
'password' =>'sometimes|required_with:password_confirmation|confirmed'];
}
И это форма, которую я использую:
<div class="form-group {{ $errors->has('name') ? 'has-error': '' }} ">
{!! Form::label('name') !!}
{!! Form::text('name', null, ['class'=>'form-control']) !!}
@if($errors->has('name'))
<span class="help-block">{{$errors->first('name')}}</span>
@endif
</div>
<div class="form-group {{ $errors->has('email') ? 'has-error': '' }}">
{!! Form::label('email') !!}
{!! Form::text('email', null, ['class'=>'form-control']) !!}
@if($errors->has('email'))
<span class="help-block">{{$errors->first('email')}}</span>
@endif
</div>
<div class="form-group {{ $errors->has('password') ? 'has-error': '' }}">
{!! Form::label('password') !!}
{!! Form::password('password', ['class'=>'form-control']) !!}
@if($errors->has('password'))
<span class="help-block">{{$errors->first('password')}}</span>
@endif
</div>
<div class="form-group {{ $errors->has('password_confirmation') ? 'has-error': '' }}">
{!! Form::label('password_confirmation') !!}
{!! Form::password('password_confirmation', ['class'=>'form-control']) !!}
@if($errors->has('password_confirmation'))
<span class="help-block">{{$errors->first('password_confirmation')}}</span>
@endif
</div>
Также вот миграция для пользовательской таблицы:
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
Что я делаю не так? Я на Laravel 7,5