php - 如何在 Laravel 5.2 中使用 HipsterJazzbo/Landlord 包 - 单数据库 Multi-Tenancy - ?

标签 php mysql laravel laravel-5 laravel-5.1

我正在使用 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/

相关文章:

php - MySQL导入: Preventing duplicates when importing records that have no primary key

php - Laravel 中另一个表的 orderBy 属性

php - 通过使用 Spatie URL-Signer 生成有限生命周期的链接来保护文件

MySQL 向 MEMORY 表中插入非常慢

php - Domain 目前无法在 Laravel 项目上处理此请求

php - 将javascript(regex)函数转换为php

javascript - 用于多个字段的单个 jQuery 图像选择器

php - 如何用 PHP 为 Android 应用程序后端编写 REST Web 服务?

php - 如何在 wordpress query_post 函数中排除没有图像的帖子?

php - 如何使用 jQuery 动态添加表格行和加载动态组合框