Добавление новых полей в пользовательскую таблицу Laravel 5.8 defaut - PullRequest
0 голосов
/ 19 апреля 2019

Я обновил таблицу laravel users , добавив еще несколько полей. usertype было одним из них.Затем я обновил поле Заполняемая модель пользователя , а также добавил необходимые типы ввода в мою форму .После всего этого я запустил php artisan migrate: refresh , после чего я вижу, что поле моей таблицы также обновлено.Но когда я отправляю форму, она генерирует следующую ошибку: usertype dosent имеет значение по умолчанию . поле типа пользователя является не пустым полем . Может кто-нибудь сказать мне, что не так в этом.Для получения дополнительной информации см. Коды ниже.

миграция

Schema::create('users', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->string('name');
    $table->string('email')->unique();
    $table->timestamp('email_verified_at')->nullable();
    $table->string('password');

    //added by myself
    $table->string('usertype');
    $table->boolean('activestatus')->default(false);
    //
    $table->rememberToken();
    $table->timestamps();
});

Модель пользователя

protected $fillable = [
    'name',
    'email',
    'password',
    'usertype',
];

Форма регистрации пользователя

@csrf
<input type="text" name="usertype" id="hiddenUserType" value="a" hidden/>
    <div class="form-group{{ $errors->has('name') ? ' has-danger' : '' }}">
        <div class="input-group input-group-alternative mb-3">
            <div class="input-group-prepend">
                <span class="input-group-text"><i class="ni ni-hat-3"></i></span>
            </div>
            <input class="form-control{{ $errors->has('name') ? ' is-invalid' : '' }}" placeholder="{{ __('Name') }}" type="text" name="name" value="{{ old('name') }}" required autofocus>
        </div>
        @if ($errors->has('name'))
            <span class="invalid-feedback" style="display: block;" role="alert">
                <strong>{{ $errors->first('name') }}</strong>
            </span>
        @endif
    </div>
    <div class="form-group{{ $errors->has('email') ? ' has-danger' : '' }}">
        <div class="input-group input-group-alternative mb-3">
            <div class="input-group-prepend">
                <span class="input-group-text"><i class="ni ni-email-83"></i></span>
            </div>
            <input class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" placeholder="{{ __('Email') }}" type="email" name="email" value="{{ old('email') }}" required>
        </div> 
        @if ($errors->has('email'))
            <span class="invalid-feedback" style="display: block;" role="alert">
                <strong>{{ $errors->first('email') }}</strong>
            </span>
        @endif
    </div>
    <div class="form-group{{ $errors->has('password') ? ' has-danger' : '' }}">
        <div class="input-group input-group-alternative">
            <div class="input-group-prepend">
                <span class="input-group-text"><i class="ni ni-lock-circle-open"></i></span>
            </div>
            <input class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" placeholder="{{ __('Password') }}" type="password" name="password" required>
        </div>
        @if ($errors->has('password'))
            <span class="invalid-feedback" style="display: block;" role="alert">
                <strong>{{ $errors->first('password') }}</strong>
            </span>
        @endif
    </div>
    <div class="form-group">
        <div class="input-group input-group-alternative">
            <div class="input-group-prepend">
                <span class="input-group-text"><i class="ni ni-lock-circle-open"></i></span>
            </div>
            <input class="form-control" placeholder="{{ __('Confirm Password') }}" type="password" name="password_confirmation" required>
        </div>
    </div>
    {{--  <div class="text-muted font-italic">
        <small>{{ __('password strength') }}: <span class="text-success font-weight-700">{{ __('strong') }}strong</span></small>
    </div>  --}}
    <div class="row my-4">
        <div class="col-12">
            <div class="custom-control custom-control-alternative custom-checkbox">
                <input class="custom-control-input" id="customCheckRegister" type="checkbox">
                <label class="custom-control-label" for="customCheckRegister">
                    <span class="text-muted">{{ __('I agree with the') }} <a href="#!">{{ __('Privacy Policy') }}</a></span>
                </label>
            </div>
        </div>
    </div>
    <div class="text-center">
        <button type="submit" class="btn btn-primary mt-4">{{ __('Create account') }}</button>
    </div>
</form>

Контроллер пользователя

public function store(UserRequest $request, User $model)
{
    $model->create($request->merge([
        'password' => Hash::make($request->get('password'))
    ])->all());

    return redirect()->route('user.index')
        ->withStatus(__('User successfully created.'));
}

Это ошибка, возникающая при попытке отправить форму

SQLSTATE [HY000]: общая ошибка: 1364 Поле 'usertype' не имеет значения по умолчанию (SQL: вставить в users (name, email, password, updated_at, created_at) значения (Нипун Тарукша, nipun@gmail.com, $ 2y $ 10 $ fHtc0yTpAFrGcO7dfg1qRe.EYZY / UNY4Ygn5qvUvcCSwoHjUjB6Gu, 2019-04-19 15:36:36, 2019-04-19 15:36:36 *) * 10481049 *

DB

Ответы [ 2 ]

1 голос
/ 19 апреля 2019

Поскольку ошибка говорит о том, что вы не предоставляете никакого значения для столбца usertype, и вы пытаетесь сохранить его со значением null. Таким образом, в этом случае вы можете изменить миграцию, чтобы разрешить null по умолчанию следующим образом:

$table->string('usertype')->nullable();

И как только вы измените миграцию, вам придется повторно запустить ее, используя:

php artisan migrate:fresh

Предупреждение: имейте в виду, что это уничтожит ваши текущие данные.

0 голосов
/ 19 апреля 2019

Спасибо за комментарий. Я обновлял Controller UserController. Но, как упомянул @tharakadilshan, я обновил mt RegisterController и теперь он работает. Еще раз спасибо за все комментарии. Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...