laravel - Laravel Hyn 多租户路由搜索所有数据库以获取价值
问题描述
试图弄清楚这是否可能,但我正在开发一个 SaaS 通信项目,该项目允许客户向联系人发送短信。如果他们愿意,这些联系人可以回复以提供双向通信。
问题是在电话 api 中设置了一个特定的回调 url,需要正确路由传入的文本请求。每个客户都有自己的号码或号码,因此我希望能够在路由中接收传入请求,在所有租户数据库中搜索电话设置表,如果找到,则通过保存短信正确继续请求,看看在创建的任何自动回复设置中,将文本转发到另一个号码等。所有这些都是每个租户特定的。
是否可以在路由/控制器中搜索所有租户数据库,然后将响应正确转发到该租户的数据库?
如果不是,或者如果它更干净,是否可以改为连接到主/核心租户并搜索电话号码和主机名的主表,然后将请求重定向到正确的租户?如果是这样,我需要能够连接主数据库,以便在每个客户端进行更改时存储和更新他们的电话号码。
解决方案
我能够通过在主机名表中添加电话号码、在那里搜索匹配项并重置与该租户的当前连接来解决它。
$hostname = DB::table('hostnames')->select('*')->where('phone_number', $request->To)->first();
if($hostname->fqdn != 'defaultdomain.com'){
$dbname = DB::table('websites')->select('uuid')->where('id', $hostname->website_id)->first();
Config::set("database.connections.tenant", [
"driver" => 'mysql',
"host" => 'localhost',
"database" => $dbname->uuid,
"username" => env('DB_USERNAME'),
"password" => env('DB_PASSWORD')
]);
Config::set('database.default', 'tenant');
DB::purge('tenant');
DB::reconnect('tenant');
}
//Continue with contact info and storing phone logs
推荐阅读
- javascript - 复杂的螺旋矩阵
- javascript - 使用 vis.js 时间线更新时间线时显示加载屏幕或加载消息
- c# - 无法访问 microsoft-graph 的 SkipToken 方法
- flutter - 如何获取过渡动画的状态
- haskell - Haskell - 如何将两个单子 Maybe 函数组合成一个函数
- java - 流过滤器中的 ContainsIgnoreCase 以计算字符串列表中出现的一个特定单词
- azure - 更新服务时不反映端点名称更改
- php - 如何在laravel中减去并获得时间输入之间的差异?
- python - 如何在不显示模块名称的情况下引发我的异常
- java - 了解 HashMap 中的“结构修改”