Пользовательская модель и поля с помощью Sentinel / Laravel

Я интегрирую новую систему в существующую базу данных.

Итак, моя таблица 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'];

}

Любая помощь будет оценена!

0

Решение

Во-первых, 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'];
}
1

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

Других решений пока нет …

По вопросам рекламы [email protected]