karlmonson / tenant
租户允许在数据库中存储配置设置。此包非常适合多租户应用程序。
Requires
- php: >=5.5.9
- illuminate/database: ^5.3 || ^5.7 || ^5.8 || ^6.0
- illuminate/support: ^5.3 || ^5.7 || ^5.8 || ^6.0
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)
贡献
感谢您愿意为租户做出贡献。您可以在此处阅读贡献指南。
致谢
- Karl Monson - 作者
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。