2016-04-01 3 views
0

I ', интегрируя новую систему в существующую базу данных.Пользовательская модель и поля с Sentinel/Laravel

Итак, моя таблица User не имеет имен полей по умолчанию.

всех имен на испанском языке, поэтому, Страж выглядит для электронной почты, когда он должен искать «Коррео»

Кроме того, при выполнении

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) 

Фактически, идентификатор не существует, PK называется administradorid

Единственный ресо urce я нашел очень быстро один:

https://github.com/cartalyst/sentinel/wiki/Extending-Sentinel

Он говорит, что это экстремально легко, но не упоминает этот случай.

Итак, в принципе, как я могу настроить все поля названия Sentinel Model ???

Вот моя модель:

class Administrador extends EloquentUser { 

protected $table = 'administrador'; 
protected $fillable = []; 
protected $guarded = ['administradorid']; 
protected $hidden = ['contrasena', 'remember_token']; 
use SoftDeletes; 

protected $dates = ['deleted_at']; 

} 

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

ответ

1

Во-первых, проблема id является основной проблемой Laravel Eloquent. Если первичным ключом для вашей модели не является id, вам необходимо установить в вашей модели $primaryKey правильное название поля. Кроме того, если ваш первичный ключ не является автоинкрементным целым числом, тогда вам необходимо установить свойство $incrementing на false.

Для вопроса email, то есть проблема с Sentinel. Класс 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

Вы повторно rightttt мой плохой для рк ... Я попытаюсь это понедельник и сказать вам! Tx! –

+0

он работает. Следующая глава, хеш-метод не то же самое -> http://stackoverflow.com/questions/36407296/hash-password-compatibility-between-yii-php-crypt-and-laravel-sentines –

Смежные вопросы