我在Laravel 5.1中构建了一个多租户应用程序。它使用一个主数据库连接来存储用户,角色,权限以及作业和failed_jobs。此外,每个用户都有自己的数据库。
我使用Job类发送邮件,当它被执行时,会发生以下异常:
[PDOException] SQLSTATE [3D000]:无效的目录名称:1046未选择数据库
该类使用来自两个数据库连接的表(主连接,以及与当前用户关联的表)。
在此先感谢,感谢任何帮助。
答案 0 :(得分:0)
好的,这很简单。对于任何有兴趣的人,我完全忘了在第二个连接中设置数据库。
实际上,第二个数据库连接中的database
字段是动态填充的,具体取决于经过身份验证的用户。因此,每次执行作业类时,都应该初始化database
字段:
Config::set('database.connections.second_connection.database', 'user_' . $user_id);
// $user_id is in fact auth()->user()->id, passed as parameter
解决了这个问题。