Laravel中未知的列“用户名" [英] Unknown column 'username' in 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
(name
,username
,password
,updated_at
,created_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
,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 username
column. Migration files can only be run once in laravel.
这篇关于Laravel中未知的列“用户名"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!