0

サブドメインに基づく認証に複数のテーブルを使用しようとしています。したがって、実行時に 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 のこのガイドを使用しましたが、ご覧のとおり、私がやろうとしていることは達成されていません。

実行時にモデルを設定するこのアプローチを使用し、すべてのセンチネル コマンドで正しいモデルを使用するにはどうすればよいですか?

4

1 に答える 1