Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 记录日志时获取特定的数据库连接字符串,并在laravel 8中动态连接到该数据库?_Php_Mysql_Laravel_Laravel 8_Multiple Databases - Fatal编程技术网

Php 记录日志时获取特定的数据库连接字符串,并在laravel 8中动态连接到该数据库?

Php 记录日志时获取特定的数据库连接字符串,并在laravel 8中动态连接到该数据库?,php,mysql,laravel,laravel-8,multiple-databases,Php,Mysql,Laravel,Laravel 8,Multiple Databases,我开发了一个web会计应用程序,使用vanilla PHP作为后端,jquery和vanilla javascript作为前端。每个客户端都有一个数据库。单个数据库包含所有客户端的数据库连接字符串和客户端的登录凭据。每当客户端使用登录凭据登录时,客户端都会从存储所有数据库连接的主数据库获取连接字符串。基于登录凭据,我的后端将连接到他们的数据库。他们将处理他们的数据库 如何使用laravel 8实现此场景?我尝试了几种解决方案,比如, , , , , 所有这些解决方案都建议使用配置文件或.en

我开发了一个web会计应用程序,使用vanilla PHP作为后端,jquery和vanilla javascript作为前端。每个客户端都有一个数据库。单个数据库包含所有客户端的数据库连接字符串和客户端的登录凭据。每当客户端使用登录凭据登录时,客户端都会从存储所有数据库连接的主数据库获取连接字符串。基于登录凭据,我的后端将连接到他们的数据库。他们将处理他们的数据库

如何使用laravel 8实现此场景?我尝试了几种解决方案,比如, , , , ,

所有这些解决方案都建议使用配置文件或.env文件。正如您在我的场景中所看到的,我无法在数据库配置数组中设置每个客户端的数据库连接,因为我的客户端的数据库连接是动态的,并且有很多数据库连接

那么你们有什么建议来克服这种情况呢

我不想使用多租户设置,这只是过火了,我想在记录时获取连接字符串,并使用该连接字符串连接用户的特定数据库。所以这是一种动态

  • 添加到config/database.php的连接(您可以复制和编辑名称。)例如,复制并将名称更改为“mysql\u user”
  • 制作中间件
  • 在中间件中检查身份验证并获取凭据
  • 在中间件中设置配置
  • 当你使用
  • 不要忘记使用中间件

  • 听起来您正在寻找多租户设置。其中一个选项是使用
    租赁/多租户
    包,如下所述:

    Config::set('database.connections.mysql_user',[
    'host' => $user->connaction->host,
    'user' => $user->connaction->user,
    ...
    ])
    
    DB::connection('mysql_user')->...
    
    #in Model
    protected $connection= 'mysql_user';