我試圖使用多個表進行基於子域的身份驗證。因此,我試圖在運行時使用Sentinel的setModel
函數來設置模型實例。Laravel Sentinel setModel訪問錯誤的表
所以文件我有一些簡單的邏輯:
if (Request::getHost() == $url) {
Sentinel::getUserRepository()->setModel('App\Client');
} else {
Sentinel::getUserRepository()->setModel('App\User');
}
是一個URL的邏輯使用一個模型,另一個使用其他模型。現在,當我試圖做一個dd(Sentinel::getUserRepository());
我獲得回報,如加載App\Client
:
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'];
}
我用this guide從GitHub的維基,但你可以看到我不是實現什麼,我試圖做的。
如何在運行期間使用此方法設置模型,並使用所有哨兵命令的正確模型?