我正在使用 https://github.com/HipsterJazzbo/Landlord Laravel 5.2+ 的单一数据库 Multi-Tenancy 解决方案。我有一个公司表,所有其他表都有一个 company_id 列。
我不确定如何在全局中间件、身份验证系统或基本 Controller 的构造函数中实现 Landlord::addTenant($tenantColumn, $tenantId) 调用。 . 我很困惑...
我该怎么做?
参数$tenantColumn是否相当于每个表的company_id列?
参数$tenantId是指company_id列中包含的各个公司的id吗?
谢谢!
最佳答案
全局中间件不是一个好地方,因为您无权访问经过身份验证的用户。一种解决方案是创建路由中间件,例如:
<?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);
}
}
将它添加到 app/Http/Kernel.php 中的 $routeMiddleware 数组中:
protected $routeMiddleware = [
[…]
'limitToCurrentCompany' => \App\Http\Middleware\LimitToCurrentCompany::class,
];
然后在你的路由文件中:
Route::group(['middleware' => 'limitToCurrentCompany'], function () {
// your routes
});
是的,就像评论中所说的那样,$tenantColumn 是 company_id,$tenantId 是公司的 ID。
关于php - 如何在 Laravel 5.2 中使用 HipsterJazzbo/Landlord 包 - 单数据库 Multi-Tenancy - ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39129545/