Laravel Cartalyst Sentinel — Добавление столбца имени пользователя в таблицу пользователей (как правильно)

Я загрузил cartalyst / sentinel и запустил миграцию, необходимую для генерации таблиц.

php artisan migrate --package=cartalyst/sentinel

Я заметил, что эти столбцы доступны в таблице пользователей.

  1. Я бы
  2. Эл. адрес
  3. пароль
  4. разрешений
  5. последний Войти
  6. имя
  7. Фамилия
  8. создан в
  9. updated_at

Я хотел бы добавить имя пользователя после электронной почты. Итак, я создал файл миграции, который делает это.

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

Теперь, когда я использую Sentinel :: зарегистрироваться

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

Имя пользователя не сохраняется в таблице. Так что мне удалось заполучить его, отредактировав поставщика / cartalyst / дозорные / SRC / Users / EloquentUser.php

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

Теперь это работает, имя пользователя сохраняется в таблице. Но я интересно, что я делаю правильно? Если мы не трогать файлы в папке пакетов. Как мы решаем это?

7

Решение

Почти. Вы должны создать свои собственные классы пользователей, расширяя 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',

],
12

Другие решения

В Laravel 5.2 после выполнения шагов @Antonio вам нужно запустить
php artisan config:cache вместо php artisan config:publish cartalyst/sentinel

3