Я использую строительные леса Laravel's Auth.При попытке зарегистрировать (создать) нового пользователя я получаю следующую ошибку (из журналов):
Нарушение ограничения целостности: 19 Не выполнено ограничение NOT NULL: users.password
но пароль является частью массива $hidden
.
Вот моя модель:
<?php
namespace App\Models;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
const USER_FIRST_NAME_FIELD = "first_name";
const USER_LAST_NAME_FIELD = "last_name";
const USER_PREFERRED_NAME_FIELD = "preferred_name";
const USER_EMAIL_FIELD = "email";
const USER_EMAIL_VERIFIED_AT_FIELD = "email_verified_at";
const USER_PASSWORD_FIELD = "password";
const USER_REMEMBER_TOKEN_FIELD = "remember_token";
const USER_RECEIVE_NEWSLETTER_FIELD= "receive_newsletter";
const USER_ACTIVE_FIELD = "active";
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
self::USER_FIRST_NAME_FIELD,
self::USER_LAST_NAME_FIELD,
self::USER_PREFERRED_NAME_FIELD,
self::USER_EMAIL_FIELD,
self::USER_RECEIVE_NEWSLETTER_FIELD,
self::USER_ACTIVE_FIELD,
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
self::USER_PASSWORD_FIELD,
self::USER_REMEMBER_TOKEN_FIELD
];
}
и вот метод create
в RegisterController
:
protected function create(array $data) : User
{
return User::create([
'first_name' => $data['first_name'],
'last_name' => $data['last_name'],
'preferred_name' => $data['preferred_name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
'receive_newsletter' => !isset($data['receive_newsletter']) || $data['receive_newsletter'] != 'on' ? 0 : 1,
]);
}
Если я распечатаю $data
в началеэтого метода я вижу, что пароль есть.
Есть предложения?