Laravel Cartalyst Sentinel-在用户表中添加用户名列(正确的方法是什么)


Laravel Cartalyst Sentinel - Adding a username column to users table (What is the right way)

我已经引入了cartalyst/stinel,并运行了生成表所需的迁移

php artisan migrate --package=cartalyst/sentinel

我注意到这些是用户表中可用的列

  1. id
  2. 电子邮件
  3. 密码
  4. 权限
  5. last_login
  6. first_name
  7. last_name
  8. 创建日期
  9. 更新日期

我想在电子邮件后添加用户名。所以我创建了一个迁移文件。

//add a column username after email in the users table
$table->string('username')->after('email')->unique();

现在,当我使用Sentinel::注册时

$credentials = Input::all();
$user = Sentinel::register($credentials);

用户名未保存在表中。因此,我通过编辑vendor/catalyst/ssentinel/src/Users/EloquentUser.php来完成它

protected $fillable = [
    'email',
    'username', /* i added this */
    'password',
    'last_name',
    'first_name',
    'permissions',
];

现在这就工作了,用户名被存储在表中。但我想知道我所做的是否正确我们不应该触摸软件包文件夹中的文件吗。我们如何解决这个问题?

差不多。您必须创建自己的User类,扩展vendor/cartalyst/sentinel/src/Users/EloquentUser.php:

use Cartalyst'Sentinel'Users'EloquentUser as CartalystUser;
class User extends CartalystUser {
    protected $fillable = [
        'email',
        'username', /* i added this */
        'password',
        'last_name',
        'first_name',
        'permissions',
    ];
}

发布Sentinel的配置:

php artisan config:publish cartalyst/sentinel

在配置文件中,将用户模型设置为您自己的:

'users' => [
    'model' => 'Your'Namespace'User',
],
相关文章: