Не могу назначить тип администратора моей команде создания администратора - PullRequest
0 голосов
/ 06 ноября 2018

Я хочу создать команду, которая будет генерировать новую учетную запись администратора. Команда запросит некоторые детали. Я хочу дать этой новой учетной записи поле типа admin, но я получаю сообщение об ошибке, что у моего поля типа нет значения по умолчанию. Что с ним не так?

код

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

class User extends Authenticatable
{
    use Notifiable;
    use SoftDeletes;

    const ADMIN_TYPE = 'admin';
    const DEFAULT_TYPE = 'default';

    public function isAdmin() {

        return $this->type === self::ADMIN_TYPE;
    }
}

Создать: админ

public function handle()
{
    $name = $this->ask('What is your full name?');
    $username = $this->ask('What is your username? (this will be your display name)');
    $email = $this->ask('What is your email?');
    $country= $this->ask('Where do you live? (country)');
    $password = $this->secret('Choose a password');

    User::create([
        'name' => $name,
        'username' => $username,
        'email' => $email ,
        'password' => Hash::make($password),
        'country' => $country,
        'type' => User::ADMIN_TYPE,
        'participated' => false,
    ]);
}

Регистрация контроллера для обычных пользователей

protected function create(array $data)
{
    session()->flash('success', 'You have successfully created an account!');
    $user = User::create([
                'name' => $data['name'],
                'email' => $data['email'],
                'password' => Hash::make($data['password']),
                'participated' => false,
                'type' => User::DEFAULT_TYPE,  
                'username' => $data['username'],
                'country' => $data['country']
    ]);

    Score::create(['user_id' => $user->id]);

    return $user;
}

Error

SQLSTATE[HY000]: General error: 1364 Field 'type' doesn't have a default value

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Измените свой класс пользователя, чтобы он был таким:

class User extends Authenticatable
{
    use Notifiable;
    use SoftDeletes;

    const ADMIN_TYPE = 'admin';
    const DEFAULT_TYPE = 'default';

    protected $fillable = [
        'name', 'email', 'username', 'password', 'participated', 'type', 'country'
    ];

    public function isAdmin() {

        return $this->type === self::ADMIN_TYPE;
    }
}

Надеюсь, это поможет вам.

0 голосов
/ 06 ноября 2018

Я уже сталкивался с этими проблемами раньше, и обычно это будет ошибка белого списка из свойства fillable в пользовательской модели. Проверьте https://laravel.com/docs/5.7/eloquent#mass-assignment для более подробной информации.

Если вы уже в белом списке введите , дамп User :: DEFAULT_TYPE.

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