サブドメインに基づく認証に複数のテーブルを使用しようとしています。したがって、実行時に Sentinel のsetModel
関数を使用してモデル インスタンスを設定しようとしています。
したがって、ルートファイルにはいくつかの簡単なロジックがあります。
if (Request::getHost() == $url) {
Sentinel::getUserRepository()->setModel('App\Client');
} else {
Sentinel::getUserRepository()->setModel('App\User');
}
1 つの URL であるロジックは 1 つのモデルを使用し、もう 1 つのモデルは別のモデルを使用します。App\Client
ここで、を実行してロードしようとすると、dd(Sentinel::getUserRepository());
次のような戻り値が返されます。
IlluminateUserRepository {#113 ▼
#hasher: NativeHasher {#114}
#model: "App\Client"
#dispatcher: Dispatcher {#23 ▶}
#dispatcherStatus: true
}
これは素晴らしいSentinel::getUser();
ことですが、 を呼び出すと、次の出力が残ります。
EloquentUser {#230 ▼
#table: "users"
#fillable: array:5 [▶]
#hidden: array:1 [▶]
#persistableKey: "user_id"
#persistableRelationship: "persistences"
#loginNames: array:1 [▶]
#connection: "mysql"
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:12 [▶]
#original: array:12 [▶]
#casts: []
#dates: []
#dateFormat: null
#appends: []
#events: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#visible: []
#guarded: array:1 [▶]
#permissionsInstance: null
}
App\User
これは私のモデルではなくモデルを指していApp\Client
ます。
理由はわかりませんが、参照しようとしているモデルを Sentinel の関数で見ることができないようです。
これが参照ポイントとしての私のクライアントモデルです。
namespace App;
class Client extends \Cartalyst\Sentinel\Users\EloquentUser
{
/**
* The fields for sentinel to authenticate (login)
*
* @var array
*/
protected $loginNames = ['email'];
/**
* The table associated with model.
*
* @var String
*/
protected $table = 'clients';
/**
* Used for mass assignment fields.
*
* @var Array
*/
protected $fillable = ['email', 'password', 'permissions', 'last_login', 'first_name', 'last_name'];
}
Github Wiki のこのガイドを使用しましたが、ご覧のとおり、私がやろうとしていることは達成されていません。
実行時にモデルを設定するこのアプローチを使用し、すべてのセンチネル コマンドで正しいモデルを使用するにはどうすればよいですか?