我正在尝试使用多租户多数据库应用程序,这基本上意味着每个租户都有自己的数据库,自己的用户,资源等。
当请求进入时,Laravel需要知道要使用哪个数据库连接,所以我编写了一个中间件,它基本上解析了请求中的JWT,并查找租户ID或用户名,然后只需连接到租户的数据库。
这适用于请求,但现在我遇到了队列。我试图为租户运行队列,比如发送电子邮件,但在开始使用句柄方法之前,laravel尝试从默认Db中获取用户并失败或者当然会取错用户。
有没有办法在队列句柄方法触发之前调用代码?我不知道laravel队列的前后方法吗?
答案 0 :(得分:0)
我不相信之前或之后的活动。
为什么不将这些信息作为包的一部分传递给handle方法,因此在处理作业时,它会获得所需的数据。
http://java2novice.com/data-structures-in-java/linked-list/doubly-linked-list/#sthash.CPsiWR4R.dpuf
在__construct
方法中设置租户ID或handle方法中您需要访问的任何其他内容,此数据在发送到队列时将被序列化。然后,当队列处理作业时,您将有权访问租户ID,就像您在该示例中的用户模型一样。