作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试开发一个 Multi-Tenancy 多数据库应用程序,这基本上意味着每个租户都有自己的数据库、自己的用户、资源等。
自然地,当收到请求时,Laravel 需要知道要使用哪个数据库连接,所以我编写了一个中间件,它基本上解析请求中的 JWT 并查找租户 ID 或用户名,然后简单地连接到租户的数据库。
这对请求很有效,但现在我被队列困住了。我正在尝试为租户运行队列,例如发送电子邮件,但在触发 handle 方法之前,laravel 会尝试从默认 Db 中获取用户,当然会失败或获取错误的用户。
有没有办法在队列句柄方法触发之前调用代码?是否有我不知道的 laravel 队列的前后方法?
最佳答案
我不相信有事前或事后之分。
为什么不将该信息作为包的一部分传递给 handle 方法,以便在处理作业时它具有所需的数据。
http://laravel.com/docs/5.1/queues#job-class-structure
在 __construct
方法中设置租户 ID 或您需要在 handle 方法中访问的任何其他内容,此数据在发送到队列时将被序列化。然后,当队列处理作业时,您将可以访问租户 ID,就像您访问该示例中的用户模型一样。
关于php - 如何在 laravel 5 队列前后触发代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34326995/
我是一名优秀的程序员,十分优秀!