Laravel 5.5. * SQLSTATE [23000]: нарушение ограничения целостности: 19 Не выполнено ограничение NOT NULL - PullRequest
0 голосов
/ 29 сентября 2019

Я пытаюсь добавить нового пользователя в свою базу данных, используя RegistrationController, предоставленный Laravel.Каждый раз, когда я пытаюсь зарегистрировать нового пользователя, он сталкивается с ошибкой, в которой говорится, что нет ненулевого ограничения, хотя я не отправляю пустые поля.Сначала я думал, что это была проблема именно с адресным полем, пока я не сделал обнуляемым в моей миграции, чтобы обойти ошибку, и ограничение по ненулевому значению для следующего поля также не удалось.Я дважды проверил все свои файлы миграции и даже сбросил данные, которые я пытаюсь передать в базу данных, чтобы дважды проверить, что ничто не является нулевым.Сообщение об ошибке говорит мне, что он даже не пытается передать информацию, которую я предоставил в базу данных, но я не знаю, как решить эту проблему.

Моя миграция:

    Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password');
            $table->string('address');
            $table->string('user_type');
            $table->boolean('approved')->nullable();
            $table->rememberToken();
            $table->timestamps();
        });

Моя функция создания в контроллере регистра:

    protected function create(array $data)
    {
        return User::create([
            'address' => $data['address'],
            'name' => $data['name'],
            'email' => $data['email'],
            'user_type' => $data['user_type'],
            'password' => Hash::make($data['password'])
        ]);
    }

Результат моего дампа данных:

       array:7 [▼
  "_token" => "d5qCwoIqyfiF1q5FyAIhi3gHEm5CA7OHpDZVRKSI"
  "name" => "test"
  "email" => "asasdfasd@sdfgsdfgg.com"
  "address" => "1637 test street"
  "user_type" => "Customer"
  "password" => "12345678"
  "password_confirmation" => "12345678"
]

И ошибка, которую я получаю:

SQLSTATE[23000]: Integrity constraint violation: 19 NOT NULL constraint failed: 
users.address (SQL: insert into "users" ("name", "email", "password", "updated_at", "created_at") 
values (test, asasdfasd@sdfgsdfgg.com, $2y$10$q1Kc0A80cd0ARJbvTtpiee59fJ8g4orilFWjNV5igihPDWQeoYhjG, 2019-09-29 08:57:58, 2019-09-29 08:57:58))

Буду очень признателен за любую помощь.Если вам нужно больше фрагментов моего кода, пожалуйста, дайте мне знать.Спасибо заранее.

1 Ответ

1 голос
/ 29 сентября 2019

В вашей модели вы должны добавить свойство fillable, чтобы разрешить массовое назначение.

class User extends Model
{
    protected $fillable = [
        'address', 'name', 'email', 'password', 'user_type'
    ];
}

или просто использовать

class User extends Model
{
    protected $guarded = [];
}
...