2016-08-24 5 views
1

私は、Laravel 5.2+用の単一データベースマルチテナントソリューションhttps://github.com/HipsterJazzbo/Landlordを使用しています。私は会社のテーブルを持ち、他のすべてのテーブルはcompany_idの列を持っています。HipsterJazzbo/Landlordパッケージ - シングルデータベースマルチテナント - をLaravel 5.2で使用するにはどうすればよいですか?

私は、私は...認証システムやベースコントローラのコンストラクタで、世界的なミドルウェアでコール家主:: addTenant($ tenantColumn、$ tenantId)を実装するかどうかはわかりません混乱...

どうすればよいですか?

パラメータ$ tenantColumnは、各テーブルのcompany_idカラムと同じですか?

パラメータ$ tenantIdは、company_id列に含まれる各社のIDを参照していますか?

ありがとうございました!

+0

ドキュメントを見てみると、 '$ tenantColumn'は' company_id'、 '$ tenantId'は特定の会社のIDになります。このアプローチについて何か問題はありませんでしたか? – user3158900

答えて

0

認証されたユーザーにアクセスできないため、グローバルミドルウェアは適していません。

<?php 

namespace App\Http\Middleware; 

use Closure; 
use HipsterJazzbo\Landlord\Facades\Landlord; 
use Illuminate\Support\Facades\Auth; 

class LimitToCurrentCompany 
{ 
    public function handle($request, Closure $next) 
    { 
     if (Auth::check()) { 
      $tenant = Auth::user()->currentCompany; 
      Landlord::addTenant($tenant); 
     } 

     return $next($request); 
    } 
} 

アプリで$ routeMiddleware配列に追加/ HTTP/Kernel.php:あなたのroutesファイルで次に

protected $routeMiddleware = [ 
    […] 
    'limitToCurrentCompany' => \App\Http\Middleware\LimitToCurrentCompany::class, 
]; 

:ソリューションは、たとえば、ルートミドルウェアを作成することです

Route::group(['middleware' => 'limitToCurrentCompany'], function() { 
    // your routes 
}); 

はい、コメントのように、$ tenantColumnはcompany_id、$ tenantIdは会社のIDです。

関連する問題