Laravel Cartalyst Sentinel - 向用户表添加用户名列(正确的方法)

时间:2014-10-01 02:59:32

标签: php laravel acl cartalyst-sentinel

我已经进入了cartalyst / sentinel并且我已经运行了生成表格所需的迁移

php artisan migrate --package=cartalyst/sentinel

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

  1. ID
  2. 电子邮件
  3. 密码
  4. 权限
  5. LAST_LOGIN
  6. 如first_name
  7. 姓氏
  8. created_at
  9. 的updated_at
  10. 我想在电子邮件后添加用户名。所以我创建了一个迁移文件来实现这一点。

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

    现在我使用Sentinel :: register

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

    用户名未保存在表格中。所以我设法通过编辑 vendor / cartalyst / sentinel / src / Users / EloquentUser.php

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

    现在这个工作,用户名存储在表中。但我想知道我在做什么是对的?我们不应该触摸packages文件夹中的文件。我们如何解决这个问题?

2 个答案:

答案 0 :(得分:12)

几乎。您必须创建自己的用户条款,扩展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',

],

答案 1 :(得分:3)

在Laravel 5.2中,执行@Antonio步骤后,您需要运行
php artisan config:cache代替php artisan config:publish cartalyst/sentinel