Php Can';t将管理类型分配给我的create admin命令

Php Can';t将管理类型分配给我的create admin命令,php,sql,laravel,Php,Sql,Laravel,我想创建一个命令,生成一个新的管理员帐户。命令将询问一些细节。我想给那个新帐户指定admin的type字段,但是我得到一个错误,我的type字段没有默认值。怎么了 代码 用户模型 class User extends Authenticatable { use Notifiable; use SoftDeletes; const ADMIN_TYPE = 'admin'; const DEFAULT_TYPE = 'default'; public f

我想创建一个命令,生成一个新的管理员帐户。命令将询问一些细节。我想给那个新帐户指定admin的type字段,但是我得到一个错误,我的type字段没有默认值。怎么了

代码

用户模型

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;
}
错误

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

我以前遇到过这些问题,通常情况下,用户模型中的fillable属性会出现白名单错误。查看更多详细信息


如果您已将类型列入白名单,请转储User::DEFAULT\u type。

将您的用户类修改为如下所示:

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;
    }
}

我希望这会对您有所帮助。

我犯了一个非常愚蠢的错误,我忘了将type属性添加到fillable。谢谢你的关注!我很高兴我能帮助@dax