2016-04-01 31 views
0

私は新しいシステムを既存のデータベースに統合しています。カスタムモデルとSentinel/Laravelのフィールド

私のUserテーブルには、デフォルトのフィールド名がありません。

Sentinel::check(), 

を実行するときに

すべての名前はスペイン語であるので、彼は "correo" のためにも

を探す必要があるときセンチネルは、電子メールを探し、私はこのメッセージのエラーを取得:

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) 

実際、IDは存在しません。PKはadministradoridと呼ばれます

唯一のレゾ私が見つけたurceは、1つの非常に速いです:

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クラスはように見える終わる:あなたはPKのための私の悪いをrightttt再

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

...私は月曜日にそれを試してみて、あなたに伝えるでしょう! Tx! –

+0

それが動作します。次の章、ハッシュ方法は同じではありません - > http://stackoverflow.com/questions/36407296/hash-password-compatibility-between-yii-php-crypt-and-laravel-sentines –