我倾向于在任何请求,任何建议之前切换数据库连接?
我使用域路由组:
Route::group(['domain' => 'example.com'], function () {
Route::get('/', function () {
return view('welcome');
});
... and other routes
});
但是我想在按域的任何路由组之后打开数据库连接,并使用一个控制器来控制所有域,但是要使用多个数据库。 知道怎么做吗? 我知道我可以像这样切换控制器中的连接:
$connection = config('database.connections.mysql');
$conn = DB::connection($connection);
$model = $conn->table('models');
$models = $model->get();
例如。 但是我想要它,然后再向应用程序发出任何请求。
答案 0 :(得分:0)
我认为Laravel中间件可以在这里使用。在此处查看文档:{{3}}
中间件简介:
中间件提供了一种方便的机制来过滤HTTP请求 输入您的应用程序。例如,Laravel包含一个中间件 验证您的应用程序的用户已通过身份验证。如果 用户未通过身份验证,中间件会将用户重定向到 登录屏幕。但是,如果用户通过了身份验证, 中间件将允许请求进一步处理 应用。
当然,可以编写其他中间件来执行多种操作 除了身份验证以外的任务。 CORS中间件可能是 负责为所有响应添加适当的标头 你的申请。记录中间件可能会记录所有传入的请求 您的应用程序。
您可以将查询同一数据库的所有路由放在同一中间件中,并相应地交换数据库。 在此之前,中间件将是理想的选择。
中间件之前和之后:
在请求之前或之后运行中间件取决于 中间件本身。例如,以下中间件将执行 在请求由应用程序处理之前的一些任务。
答案 1 :(得分:0)
您必须具有一个中间件,该中间件会将所有路由包装在该组中。在该中间件中,您可以根据需要在数据库之间进行切换。