首页 > 解决方案 > Laravel - 动态指定数据库连接

问题描述

我在我的 Laravel 应用程序中使用了 2 个数据库。我有一个本地 SQLite 数据库和一个远程 MySQL 数据库。现在我需要在需要时切换env文件以连接到每个数据库。我的问题是,是否可以切换 env 文件,以便我用于两个数据库的模型在相应的数据库上工作。

这个项目是相当新的,所以如果有人知道更好的方法来处理这个问题,我会全力以赴。

标签: laravel

解决方案


connections您可以在您的文件中定义几个,并通过外观上的方法config/database.php访问每个连接:connectionDB

$sqliteUsers = DB::connection('sqlite')->select(...);

$mysqlUsers = DB::connection('mysql')->select(...);

查看Laravel 文档中的“使用多个数据库连接”部分了解更多信息。

您可以on在雄辩的模型上使用方法:

use App\User;

$sqliteUsers = User::on('sqlite')->get()

$mysqlUsers = User::on('mysql')->get();

你也可以静态地为一个 eloquent 模型指定一个连接:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Flight extends Model
{
    /**
     * The connection name for the model.
     *
     * @var string
     */
    protected $connection = 'sqlite';
}

查看Laravel 文档的“数据库连接”部分了解更多信息。


推荐阅读