Laravel Hyn 多租户路由在所有数据库中搜索价值
Laravel Hyn Multi-Tenant Route Search All Databases for Value
试图弄清楚这是否可行,但我正在从事一个 SaaS 通信项目,该项目允许客户向联系人发送短信。这些联系人可以根据需要进行回复,以提供双向通信。
问题是 phone api 中设置了一个特定的回调 url,需要正确路由传入的文本请求。每个客户都有自己的一个或多个号码,因此我希望能够在路由中接收传入请求,在所有租户数据库中搜索 phone 设置 table,如果找到,则继续请求正确保存短信,查看创建的任何自动回复设置,将文本转发到另一个号码等。所有这些都是每个租户特定的。
是否可以搜索 route/controller 中的所有租户数据库,然后将响应正确转发到该租户的数据库?
如果不是,或者如果它更干净,是否可以改为连接到 master/core 租户并搜索 phone 号码和主机名的主 table 并重定向向适当的租户提出要求吗?如果是这样,我需要能够连接主数据库,以便在每个客户端进行更改时存储和更新 phone 号码。
我能够通过在主机名 table 中添加 phone 数字,在那里搜索匹配项,并重置与该租户的当前连接来解决它。
$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
试图弄清楚这是否可行,但我正在从事一个 SaaS 通信项目,该项目允许客户向联系人发送短信。这些联系人可以根据需要进行回复,以提供双向通信。
问题是 phone api 中设置了一个特定的回调 url,需要正确路由传入的文本请求。每个客户都有自己的一个或多个号码,因此我希望能够在路由中接收传入请求,在所有租户数据库中搜索 phone 设置 table,如果找到,则继续请求正确保存短信,查看创建的任何自动回复设置,将文本转发到另一个号码等。所有这些都是每个租户特定的。
是否可以搜索 route/controller 中的所有租户数据库,然后将响应正确转发到该租户的数据库?
如果不是,或者如果它更干净,是否可以改为连接到 master/core 租户并搜索 phone 号码和主机名的主 table 并重定向向适当的租户提出要求吗?如果是这样,我需要能够连接主数据库,以便在每个客户端进行更改时存储和更新 phone 号码。
我能够通过在主机名 table 中添加 phone 数字,在那里搜索匹配项,并重置与该租户的当前连接来解决它。
$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