php - 如何在 laravel 5 队列前后触发代码?

标签 php laravel laravel-5 queue

我正在尝试开发一个 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/

相关文章:

php - 使用 pecl oauth 为 LTI 结果服务构建 body 签名的 oauth xml 请求

php - opencart 2.0 结帐流程中缺少确认订单按钮

php - 使用 Laravel 在本地保存文件

laravel - 页面浏览计数器在Laravel 5

javascript - 页面中的脚本在包含具有不同脚本的其他页面的内容时停止工作

php - 是否有用于更改 RecurringPaymentsProfile 信用卡号的 API?

php - Laravel Mix 为 url() 禁用文件加载器

php - 配置导航栏在不同类型的用户登录 Laravel 5.2 时显示不同的按钮

laravel - 如何在 Laravel 5 中将数据库中的图像显示到 Blade

php - Laravel 多个数据库连接不起作用