在任何请求之前切换连接Laravel

时间:2018-08-30 12:08:10

标签: php mysql database laravel

我倾向于在任何请求,任何建议之前切换数据库连接?

我使用域路由组:

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();

例如。 但是我想要它,然后再向应用程序发出任何请求。

2 个答案:

答案 0 :(得分:0)

我认为Laravel中间件可以在这里使用。在此处查看文档:{​​{3}}

中间件简介:

  

中间件提供了一种方便的机制来过滤HTTP请求   输入您的应用程序。例如,Laravel包含一个中间件   验证您的应用程序的用户已通过身份验证。如果   用户未通过身份验证,中间件会将用户重定向到   登录屏幕。但是,如果用户通过了身份验证,   中间件将允许请求进一步处理   应用。

     

当然,可以编写其他中间件来执行多种操作   除了身份验证以外的任务。 CORS中间件可能是   负责为所有响应添加适当的标头   你的申请。记录中间件可能会记录所有传入的请求   您的应用程序。

您可以将查询同一数据库的所有路由放在同一中间件中,并相应地交换数据库。 在此之前,中间件将是理想的选择。

中间件之前和之后:

  

在请求之前或之后运行中间件取决于   中间件本身。例如,以下中间件将执行   在请求由应用程序处理之前的一些任务。

答案 1 :(得分:0)

您必须具有一个中间件,该中间件会将所有路由包装在该组中。在该中间件中,您可以根据需要在数据库之间进行切换。