首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为监控器定义数据库连接

为监控器定义数据库连接
EN

Stack Overflow用户
提问于 2022-07-26 09:41:14
回答 1查看 55关注 0票数 0

在我的laravel 8应用程序中,我有三个数据库连接,即Database-0Database-1Database-2

Database-0用于对用户进行身份验证,因此它具有users表,而Laravel Auth方法使用此连接检索用户,因为我已经在passport配置文件中设置了它。Database-1Database-2连接用于除身份验证以外的所有其他目的。

在我的users表中,只有两个用户使用电子邮件first_user@example.comsecond_user@example.com

当用户使用first_user@example.com登录时,应该使用Database-1,如果用户使用second_user@example.com登录,则应该使用Database-2

为了实现这一点,我创建了一个中间件,并将其注册到$middleware组中,以便为所有请求运行。在这个中间件中,我检查登录的用户电子邮件,并在此基础上设置数据库连接。

到现在为止,一切都很完美。

现在,我有一个工作是排队,我使用database作为我的QUEUE_CONNECTION。所以我的工作存储在数据库jobs表中。我已为处理此职务配置了主管。

现在的问题是,当主管进行查询来检索作业时,我的中间件没有被调用,它会抛出以下错误

invalid catalog name: 1046 No database selected (SQL: select * from作业where ....)

因此,我的问题是如何设置数据库连接,以便主管在检索作业时从数据库中进行选择?

中间件

代码语言:javascript
复制
public function handle(Request $request, Closure $next)
{
    $auth_email = Auth::guard('api')->user()?->email;
    if ($auth_email === 'first_user@example.com') {
        config(['database.connections.fe_mysql.database' => 'Database-1']);
    } elseif ($auth_email === 'second_user@example.com') {
        config(['database.connections.fe_mysql.database' => 'Database-2']);
    }

    return $next($request);
}

主管配置

代码语言:javascript
复制
[program:queue-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/laravel-project/artisan queue:work --queue=admin
autostart=true
autorestart=true
user=root
numprocs=8
redirect_stderr=true
stopwaitsecs=7200
stdout_logfile=/var/www/html/laravel-project/worker.log
EN

回答 1

Stack Overflow用户

发布于 2022-07-26 10:49:12

使用config()函数设置额外的或覆盖现有的连接设置。

代码语言:javascript
复制
config(['database.connections.mynewconnection' => {settings here}]);

请记住,这些设置是缓存的。因此,当您需要使用新设置时,清除要使用的连接的DB缓存。

代码语言:javascript
复制
DB::purge('mynewconnection');

还可以操作所使用的默认连接。如果您希望在不同的连接上使用迁移,并在使用的连接中使用迁移表来跟踪它们,这可能会派上用场。或者其他很酷的东西..。

代码语言:javascript
复制
DB::setDefaultConnection('mynewconnection');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73121098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档