Laravel 中的未知列 'username'

Unknown column 'username' in Laravel

这两天一直在努力解决这个问题。

当我尝试将用户数据播种到我的数据库时,我得到:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'username' in 'field list' (SQL: insert into users (name, username, password, email, updated_at, created_at) values (tony, tony_admin, y$lBDvjtEu.tYueU
AuRutTteHLmOntXSBAZsX.tO.ZK3RtxwiLXOBGW, tony_admin@laravel.com, 2018-02-18 00:12:39, 2018-02-18 00:12:39))

User.php

class User extends Authenticatable
{
    use Notifiable;
    protected $fillable = [
        'name', 'username', 'email', 'password',
    ];
    protected $hidden = [
        'password', 'remember_token',
    ];
}

创建用户迁移文件

class CreateUsersTable extends Migration
{

    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('username')->unique();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('users');
    }
}

注册控制器

class RegisterController extends Controller
{

    use RegistersUsers;

    protected $redirectTo = '/home';

    public function __construct()
    {
        $this->middleware('guest');
    }

    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => 'required|string|max:255',
            'username' => 'required|string|max:255|unique:users',
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:6|confirmed',
        ]);
    }

    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'username' => $data['username'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
        ]);
    }
}

数据库播种机

class DatabaseSeeder extends Seeder
{

    public function run()
    {
        Model::unguard();
        $this->call(UsersTableSeeder::class);
        $this->command->info("Users table seeded :)");
        Model::reguard();
    }
}

class UsersTableSeeder extends Seeder
{
    public function run()
    {
        User::create(array(
            'name' => 'tony',
            'username' => 'tony_admin',
            'password' => Hash::make('admin'),
            'email' => 'tony_admin@laravel.com'
        ));
    }
}

我试过搜索答案,但所有类似的问题似乎都在尝试使用外键,而我只是想向默认用户 class 添加一个 username 字段.

我正在使用 Laravel 版本 5.5.34。这是怎么回事?

运行 这一切都在CMD

php artisan view:clear

php artisan cache:clear

php artisan debugbar:clear

composer dump-autoload

php artisan log:clear

也许你可以使用这个:

    DB::table('users')
    ->insert([
        'name' => 'tony',
        'username' => 'tony_admin',
        'password' => Hash::make('admin'),
        'email' => 'tony_admin@laravel.com'
    ]);

人们总是用错误的答案来回答这个问题,所以我要 post 我在评论中得到的有效答案。我试图用已经 运行 的相同迁移文件添加 username 列。我需要创建一个新的迁移文件来更新 users table 并添加 username 列。迁移文件在 laravel.

中只能 运行 一次