Laravel-动态指定数据库连接

时间:2020-11-09 16:12:40

标签: laravel

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

这个项目是一个相当新的项目,所以如果有人知道更好的方法来解决这个问题,我会耳目一新。

1 个答案:

答案 0 :(得分:1)

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

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

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

在Laravel文档上查看"Using Multiple Database Connections"部分以获取更多信息。

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

use App\User;

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

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

您还可以静态地为雄辩的模型指定一个连接:

<?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文档上查看"Database Connection"部分以获取更多信息。

相关问题