Php Laravel多数据库,一个数据库存储用户
我为一家公司开发了一个标准的Laravel应用程序。我现在正在将其制作成一个SAAS模型,但我想知道最好的设置。我确信我希望每家公司都有自己的数据库,以确保安全性,更容易获得特定的客户数据,因为这些公司都是竞争对手,所以这可能是一个更好的卖点 我的问题是如何设置DBs和子域的but,以指向其特定的DB和应用程序设置,但我并不真正想要100个子域,对于iOS应用程序,我需要一个单用户身份验证门户 是否有一种特定的方法可以让数据库容纳所有的laravel用户,并在登录时提供给他们特定的数据库?基本上我只需要一个门户(auth位置) 我知道这是一般性的,但不知道该在哪里发布或搜索什么 设置: 用户数据库(标准laravel设置) a公司dbPhp Laravel多数据库,一个数据库存储用户,php,mysql,laravel,Php,Mysql,Laravel,我为一家公司开发了一个标准的Laravel应用程序。我现在正在将其制作成一个SAAS模型,但我想知道最好的设置。我确信我希望每家公司都有自己的数据库,以确保安全性,更容易获得特定的客户数据,因为这些公司都是竞争对手,所以这可能是一个更好的卖点 我的问题是如何设置DBs和子域的but,以指向其特定的DB和应用程序设置,但我并不真正想要100个子域,对于iOS应用程序,我需要一个单用户身份验证门户 是否有一种特定的方法可以让数据库容纳所有的laravel用户,并在登录时提供给他们特定的数据库?基本上
accounts | routes
b公司db
accounts | routes
您的应用程序有一个默认数据库。这就是用户进行身份验证的地方。然后,每个公司都会将其数据库详细信息存储在主数据库中。一旦有人进行了身份验证,您就获取数据库详细信息并将其作为默认值
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."]);
}
}
不确定这是不是最好的方法,但它至少可以让您动态更改连接详细信息
另一方面,您可以避免更新现有的,而是动态地添加一个新的
config(['database.connections.'.$company->id => [
'driver' => 'mysql',
'host' => $company->host,
'username' => $company->username,
'password' => $company->password
]]);
//Using it
$clients = DB::connection($company->id)->select(...);
对一个数据库存储用户的多数据库使用联接表方法 了解有关laravel联接表的更多信息
config(['database.connections.'.$company->id => [
'driver' => 'mysql',
'host' => $company->host,
'username' => $company->username,
'password' => $company->password
]]);
//Using it
$clients = DB::connection($company->id)->select(...);