【问题标题】:Laravel Hyn Multi-Tenant Route Search All Databases for ValueLaravel Hyn 多租户路由搜索所有数据库以获取价值
【发布时间】:2020-07-29 21:11:05
【问题描述】:

试图弄清楚这是否可行,但我正在开发一个 SaaS 通信项目,该项目允许客户向联系人发送短信。如果他们愿意,这些联系人可以回复以提供双向通信。

问题是在电话 api 中设置了一个特定的回调 url,需要正确路由传入的文本请求。每个客户都有自己的号码或号码,因此我希望能够在路由中接收传入请求,在所有租户数据库中搜索电话设置表,如果找到,则通过保存短信正确继续请求,看在创建的任何自动回复设置中,将文本转发到另一个号码等。所有这些都是针对每个租户的。

是否可以在路由/控制器中搜索所有租户数据库,然后将响应正确转发到该租户的数据库?

如果不是,或者如果它更干净,是否可以改为连接到主/核心租户并搜索电话号码和主机名的主表,然后将请求重定向到正确的租户?如果是这样,我需要能够连接主数据库,以便在每个客户端进行更改时存储和更新他们的电话号码。

【问题讨论】:

    标签: laravel routes multi-tenant


    【解决方案1】:

    我能够通过在主机名表中添加电话号码、在那里搜索匹配项并重置与该租户的当前连接来解决此问题。

    $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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-14
      • 2017-09-09
      • 2020-11-22
      • 2021-02-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多