在Laravel中排队多租户应用程序

时间:2016-08-30 11:17:34

标签: queue laravel-5.1 multi-tenant job-scheduling

我在Laravel 5.1中构建了一个多租户应用程序。它使用一个主数据库连接来存储用户,角色,权限以及作业和failed_jobs。此外,每个用户都有自己的数据库。

我使用Job类发送邮件,当它被执行时,会发生以下异常:

  

[PDOException] SQLSTATE [3D000]:无效的目录名称:1046未选择数据库

该类使用来自两个数据库连接的表(主连接,以及与当前用户关联的表)。

在此先感谢,感谢任何帮助。

1 个答案:

答案 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

解决了这个问题。