Laravel Cartalyst Sentinel - Добавление столбца имени пользователя в таблицу пользователей (что является правильным способом)
Я загрузил cartalyst/sentinel и запустил миграцию, необходимую для генерации таблиц.
php artisan migrate --package=cartalyst/sentinel
Я заметил, что эти столбцы доступны в таблице пользователей.
- Я бы
- Эл. адрес
- пароль
- разрешений
- последний Войти
- имя
- Фамилия
- создан в
- 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);
Имя пользователя не сохраняется в таблице. Так что мне удалось заполучить его, отредактировав vendor/cartalyst/sentinel/src/Users/EloquentUser.php
protected $fillable = [
'email',
'username', /* i added this */
'password',
'last_name',
'first_name',
'permissions',
];
Теперь это работает, имя пользователя сохраняется в таблице. Но мне интересно, правильно ли то, что я делаю? Если мы не трогать файлы в папке пакетов. Как мы решаем это?
2 ответа
Почти. Вы должны создать свои собственные классы пользователей, расширяя 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',
],
В Laravel 5.2 после выполнения шагов @Antonio вам нужно запуститьphp artisan config:cache
вместо php artisan config:publish cartalyst/sentinel