Я интегрирую новую систему в существующую базу данных.
Итак, моя таблица User не имеет имен полей по умолчанию.
Все имена на испанском, поэтому Sentinel ищет электронную почту, когда ему нужно искать «correo»
Кроме того, при выполнении
Sentinel::check(),
Я получаю это сообщение об ошибке:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'administrador.id' in 'where clause' (SQL: select * from `administrador` where `administrador`.`id` = 1 and `administrador`.`deleted_at` is null limit 1)
На самом деле, идентификатор не существует, ПК называется админрадорид
Единственный ресурс, который я нашел, очень быстрый:
https://github.com/cartalyst/sentinel/wiki/Extending-Sentinel
Это говорит о том, что это очень легко, но не стоит упоминать этот случай.
Итак, в принципе, как я могу настроить все имена полей модели Sentinel ???
Вот моя модель:
class Administrador extends EloquentUser {
protected $table = 'administrador';
protected $fillable = [];
protected $guarded = ['administradorid'];
protected $hidden = ['contrasena', 'remember_token'];
use SoftDeletes;
protected $dates = ['deleted_at'];
}
Любая помощь будет оценена!
Во-первых, id
проблема является основной проблемой Laravel Eloquent. Если первичный ключ для вашей модели не id
тогда вам нужно установить $primaryKey
свойство на вашей модели с правильным именем поля. Кроме того, если ваш первичный ключ не является автоинкрементным целым числом, вам необходимо установить $incrementing
собственность на false
, также.
Для email
проблема, это специфическая проблема Стража. EloquentUser
класс имеет $loginNames
свойство, которое установлено в массив допустимых имен полей, которые содержат логины пользователя. По умолчанию просто ['email']
, поэтому вам нужно переопределить это свойство и изменить его на имя вашего поля.
Так что ваши Administrador
класс в конечном итоге выглядит так:
class Administrador extends EloquentUser {
use SoftDeletes;
protected $table = 'administrador';
protected $primaryKey = 'administradorid';
//public $incrementing = false; // only if primary key is not an autoinc int
protected $fillable = [];
protected $guarded = ['administradorid'];
protected $hidden = ['contrasena', 'remember_token'];
protected $dates = ['deleted_at'];
// Sentinel overrides
// array of fields that hold login names
protected $loginNames = ['correo'];
}
Других решений пока нет …