Laravel中未知的列“用户名" [英] Unknown column 'username' in Laravel

查看:66
本文介绍了Laravel中未知的列“用户名"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以前尝试解决此问题已有2天.

Been trying to solve this for 2 days now.

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

When I try to seed user data to my database, I get:

SQLSTATE [42S22]:找不到列:1054中的未知列'username' '字段列表'(SQL:插入users(nameusernamepasswordemailupdated_atcreated_at)值(色调, tony_admin,$ 2y $ 10 $ lBDvjtEu.tYueU
AuRutTteHLmOntXSBAZsX.tO.ZK3RtxwiLXOBGW,tony_admin @ laravel.com, 2018-02-18 00:12:39,2018-02-18 00:12:39))

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, $2y$10$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'
        ));
    }
}

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

I've tried searching for answers, but all the similar questions seem to trying to use foreign keys, whereas I'm just trying to add a username field to the default user class.

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

I'm using Laravel version 5.5.34. What's going on here?

推荐答案

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

People keep answering this with wrong answers so I'm going to post the answer that I got in the comments which worked. I was trying to add the username column with the same migration file which had already ran. I needed to create a new migration file to update the users table and add the usernamecolumn. Migration files can only be run once in laravel.

这篇关于Laravel中未知的列“用户名"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆