karlmonson/tenant

租户允许在数据库中存储配置设置。此包非常适合多租户应用程序。

1.2 2019-12-11 03:16 UTC

This package is auto-updated.

Last update: 2024-09-11 14:16:07 UTC


README

租户允许在数据库中存储配置设置。此包非常适合多租户应用程序。

安装

通过Composer安装

$ composer require "karlmonson/tenant": "~1.0"

配置

注册服务提供者

Karlmonson\Tenant\TenantServiceProvider::class,

然后注册外观

'Tenant' => Karlmonson\Tenant\Facades\Tenant::class,

然后运行迁移以创建租户数据库表

php artisan migrate

使用方法

种子

要开始,您可以使用通过运行以下命令提供的TenantTableSeeder:

php artisan tenant:seed

这将使用在.env文件中找到的默认第三方配置变量来填充租户表。

创建/更新键

要将新的键/值存储在租户表中,您可以使用租户外观上的set方法

<?php

namespace App;

use Karlmonson\Tenant\Facades\Tenant;

class Store
{
    public function setKey($key, $value, $encrypt = false, $env = false)
    {
        Tenant::set($key, $value, $encrypt, $env);
    }
}

set函数将同时存储新的键/值对以及更新已存在的对。

如果将encrypt标志设置为true,则将使用Laravel的encrypt()方法存储值。当您从租户检索值时,它将自动通过decrypt()方法过滤。建议始终为密码、API密钥和任何其他敏感信息使用encrypt标志。

如果将env标志设置为true,则它将让租户知道这是一个系统/包配置选项,应该用于替代在.env文件中设置值。

您还可以使用Artisan命令来设置/更新键

php artisan tenant:set key value --encrypt=0|1 --environment=0|1

检索键

要检索租户表中的键/值对,您可以使用租户外观上的get方法

<?php

namespace App;

use Karlmonson\Tenant\Facades\Tenant;

class Store
{
    public function getKey($key, $default = null)
    {
        Tenant::get($key, $default);
    }
}

get方法类似于Config::get()方法,允许您传递一个默认值,如果键的值为null或键不存在,则返回该值。

您还可以使用Artisan命令获取键,这在测试/调试方面很有用

php artisan tenant:get key

或者,您也可以使用以下命令列出租户表中的所有键:

php artisan tenant:list

使用存储的配置值

这可能是租户最重要的部分,当然也是最神奇的部分。

当使用租户为第三方服务时,您可以通过在租户外观上调用swapConfig方法来使用这些值

<?php

namespace App\Http\Controllers;

use App\Mail\TestMail;
use Illuminate\Support\Facades\Mail;
use Karlmonson\Tenant\Facades\Tenant;

class TestController extends Controller
{
    public function sendMail()
    {
        Tenant::swapConfig();
        
        Mail::to('test@example.com')->send(new TestMail());
    }
}

swapConfig方法将加载存储的值到当前请求对应的配置中。它们不会被永久添加到配置中,这使得您仍然可以使用.env文件中的值,如果您愿意的话。

为了成功交换租户中存储的键/值,它们必须遵循.env文件中列出的相同结构。(例如:MAIL_DRIVER或REDIS_HOST)

贡献

感谢您愿意为租户做出贡献。您可以在此处阅读贡献指南。

致谢

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件