2016-04-01 17 views
0

I ', Integrieren eines neuen Systems in eine vorhandene Datenbank.Benutzerdefiniertes Modell und Felder mit Sentinel/Laravel

Also meine Benutzer Tabelle hat keine Standard-Felder Namen.

Alle Namen sind in Spanisch, so, Sentinel für E-Mail aussieht, wenn er für "Correo"

auch aussehen sollte, wenn

Sentinel::check(), 

ich diese Fehlermeldung erhalten, Ausführung:

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) 

In der Tat, ID existiert nicht, die PK heißt administratorid

Die einzige reso urce Ich fand eine sehr schnell ein:

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

Es sagt, dass es extrem einfach ist, aber dieser Fall nicht erwähnen.

Also, im Grunde, wie kann ich alle Felder Name des Sentinel-Modells anpassen ???

Hier ist mein Modell:

class Administrador extends EloquentUser { 

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

protected $dates = ['deleted_at']; 

} 

Jede mögliche Hilfe geschätzt wird!

Antwort

1

Zunächst ist das id Problem eine grundlegende Laravel Eloquent Problem. Wenn der Primärschlüssel für Ihr Modell nicht id lautet, müssen Sie die Eigenschaft $primaryKey in Ihrem Modell auf den korrekten Feldnamen festlegen. Wenn Ihr Primärschlüssel keine automatisch inkrementierende Ganzzahl ist, müssen Sie außerdem die $incrementing -Eigenschaft auf false setzen.

Für das Problem email ist dies ein Sentinel-spezifisches Problem. Die Klasse EloquentUser verfügt über eine $loginNames-Eigenschaft, die auf ein Array mit gültigen Feldnamen festgelegt ist, die Benutzeranmeldungen enthalten. Der Standardwert ist nur ['email'], Sie müssen diese Eigenschaft also überschreiben und in Ihren Feldnamen ändern.

Also, Ihre Administrador Klasse endet aussehen wie:

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

Sie wieder mein schlecht für pk rightttt ... Ich werde es Montag versuchen und Ihnen sagen! Tx! –

+0

es funktioniert. Nächstes Kapitel, Hash-Methode ist nicht das gleiche-> http://stackoverflow.com/questions/36407296/hash-password-compatibility-between-yii-php-crypt-and-laravel-sentines –

Verwandte Themen