如何使用变量为LAMP中Laravel 5.3中的每个用户分配一个数据库?

How to use a variable to assign a database to each user in Laravel 5.3 in LAMP?

我在我的在线自制服务器 (lamp) 中 运行 有一个商店库存控制的小应用程序,我用 laravel 制作了我的网络应用程序,现在我必须用它来控制更多的商店,所以我的想法是,当用户登录应用程序时,他只能访问他自己的数据库,所以我想我必须传递一个变量,其中包含与每个特定商店相对应的数据库名称。我怎样才能做到这一点?为每个商店创建一个虚拟主机是否正确(现在可以是 6 个,但将来可以增加)?或者我应该使用一个虚拟主机并在 webapp 中以编程方式解决数据库分配?欢迎所有建议。提前致谢

无论如何我都不是 laravel 的专家,但是我想有几种方法可以做到这一点,也就是说,在分配数据库变量/连接时应该考虑安全问题基于用户价值观。

一个示例是创建一个数据库 table 来保存每个商店的数据库名称,这样您就可以向数据库发出请求并请求该特定商店的数据库名称。

  ID |  Shop_Database_name
-----+-----
   1 | myshop1
   2 | myshop2
   3 | myshop3

然后你可以建立你的数据库连接基于 shop_database_name 存储在一个 master table.

DB::select('shop_database_name')->where('id', $shop->id)->first();

// Now you will build a database connection using something like:

$shopDatabase = DB::connection('shop_database_name')->select(...);

您也可以为每个商店预先配置 config/database.php 多个数据库,但是如果您有很多商店注册,这不是最好的方法,我建议您有一个整体 table 包含每个商店的所有数据库名称。

如果我走错了路,请随时告诉我,我会尽我所能提供帮助。