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.
中只能 运行 一次
这两天一直在努力解决这个问题。
当我尝试将用户数据播种到我的数据库时,我得到:
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, 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.