marciojcoelho/multi-tenant

一个简单轻量级的Laravel多租户应用构建包。

1.3.7 2017-02-16 10:08 UTC

This package is not auto-updated.

Last update: 2024-09-23 14:33:52 UTC


README

一个简单轻量级的Laravel多租户应用构建包。

安装

此包依赖于composer作为依赖管理器。运行composer require marciojcoelho/multi-tenant来安装此包。接下来,在config/app.php中添加服务提供者:Mjc\MultiTenant\MultiTenantServiceProvider::class以进行引导。

定义租户

租户定义在config/tenant.php中。请确保运行php artisan vendor:publish命令以创建此文件。默认情况下,租户目录位于storage/tenants/{tenantID}。如果您想使用不同的基本路径,则覆盖path数组键。

return [
    'path' => storage_path('tenants'),

    'hosts' => [
        'mysite.com' => [
            'id'    => 'mysite',
            'name'  => 'MySite',
            'https' => true,
        ],
        'anothersite.com' => [
            'id'    => 'anothersite',
            'name'  => 'AnotherSite',
            'https' => false,
            'foo' => 'bar',
        ]
    ]
]

在某些情况下,您可能希望添加自定义的租户特定参数,例如API密钥。只需使用辅助函数检索特定租户的键值:tenant('foo')

Eloquent模型

为了使您的模型能够处理多个连接,只需扩展TenantModel类或实现HasTenancy特质。这两个类做的是完全一样的事情。选择您喜欢的做法。

迁移和填充

每个租户都有自己的数据库,您可能需要不时地迁移和填充。在config/database.php中定义租户连接,然后简单地向artisan添加--database参数来指定要选择的数据库,例如

php artisan migrate:refresh  --database {tenantConnection} --seed

管理资产

每个租户都有自己的资产,默认情况下存储在storage/tenants/{tenantID}/assets。使用辅助函数tasset('foo.svg')检索租户资产。此函数将使用路由asset/{path}检索位于公共目录之外的资产。