2017-06-11 12 views
0

web.php私は、HTTP要求のサブドメインタイプが作られたので、ミドルウェアのPostgresスキーマを切り替えました。この方法:ミドルウェアのラーベルオーダー(ミドルウェア優先度)。 Postgresを使用したマルチテナント

Route::group(
    [ 
     'domain'  => '{tenant}.' . config('app.url'), 
     'middleware' => 'select-schema' 
    ], 
    function() { 
     $this->get('/', '[email protected]')->middleware('auth'); 
    } 
); 

でSELECT-スキーマミドルウェアは、私はこのような何かを行います。これは正しく動作します。私はpublicスキーマのために、あらゆるindividual tenantに異なるmigrationsをしました:(心配しないでください)

DB::select('SET search_path TO ' . {tenant}); 

私の主な問題は、ということです。 individual tenantにはusersテーブルがあります。私はすぐにこのエラーをポップアップでログインしています。

SQLSTATE[42P01]: Undefined table: 7 ERROR: relation "users" does not exist

主な問題は、モデルがうまく動作しますが、ミドルウェアauthは私が注文するにはどうすればよいselect-schema

前に、最初に実行

$this->get('/', '[email protected]')->middleware('auth'); 

のですか?select-schema次にauth

答えて

1

私は解決策、このため を見つけた、App\Kernel$middlewarePriorityと呼ばれるものがあります。

これを追加すると、問題を解決するのに役立ちます。

/** 
* Responsible for prioritizing the middleware 
* 
* @var array 
*/ 
protected $middlewarePriority = [ 
    \App\Http\Middleware\SwitchSchema::class, 
]; 

私はこのリンクから解決策を得ました。

https://github.com/laravel/framework/issues/19565

0

テナントグループのルートを別のグループにラップしようとしましたか?これが動作するかどうかを参照してください:

Route::group([ 
     'domain'  => '{tenant}.' . config('app.url'), 
     'middleware' => 'select-schema' 
    ],function() { 
     Route::group(['middleware' => 'auth'], function() { 
      Route::get('/', '[email protected]'); 
     }); 
    } 
); 
+0

私がやってみましたはい、それは動作しません。とにかく私は解決策を見つけました。ありがとう。 –

関連する問題