Laravel多数据库,一个DB存储用户

时间:2017-03-15 22:59:33

标签: php mysql laravel

我有一个为公司建立的标准Laravel应用程序。我现在把它变成了SAAS模型,但好奇最好的设置。我知道我肯定会希望每家公司都有自己的安全数​​据库,更容易获得特定的客户数据,因为这些都是竞争公司,它可能只是一个更好的卖点。

我的问题是如何设置DB和子域以指向他们的特定数据库和应用程序设置,但我真的不想要100个子域,而对于iOS应用程序,我需要一个用户身份验证门户。< / p>

是否有一种特定的方法来拥有一个包含所有laravel用户的数据库,并在登录时将它们提供给他们的特定数据库?基本上我只需要一个门户(auth位置)。

我知道这是通用的,但不确定在哪里发布这个或搜索什么。

设定:

用户db(标准laravel设置)

User | Password Reset | Migrations | Roles

公司一个数据库

accounts | routes

公司b db

accounts | routes

2 个答案:

答案 0 :(得分:0)

您的应用程序有一个默认数据库。那是用户进行身份验证的地方。然后,每个公司都将其数据库详细信息存储在主数据库中。只要有人进行身份验证,您就会获取数据库详细信息并将其设置为默认值。

unordered_map

不确定它是最好的方法,但它可以让您至少动态更改连接详细信息。

另一方面,您可以避免更新现有的并实际添加新的

public function setDefaultConnection($company)
{
    //update the config
     config(['database.connections.mysql' => [
        'host'     => $company->host,
        'username' => $company->username,
        'password' => $company->password
    ]]);

    //Check the credentials by calling PDO 
    try {
        DB::connection()->getPdo();
    } catch (\Exception $e) {
        return redirect()->back()->withErrors(["connection" => "Could not connect to the database.  Please check your input."]);
    }
}

答案 1 :(得分:0)

对多个数据库使用连接表方法,一个数据库存储用户

详细了解laravel join table Click here