Laravel 5 更改控制器中的数据库名称

Laravel 5 Changing Database name in controller

们。我需要将数据库名称更改为特定的控制器。我已经把 database.php 改成了这个

'sqlsrv' => [
        'driver'   => 'sqlsrv',
        'host'     => env('DB_HOST', 'loal'),
        'database' => env('DB_DATABASE', 'test1'),
        'username' => env('DB_USERNAME', ''),
        'password' => env('DB_PASSWORD', ''),
        'charset'  => 'utf8',
        'prefix'   => '',
    ],
    'sqlsrv2' => [
        'driver'   => 'sqlsrv',
        'host'     => env('DB_HOST', 'local'),
        'database' => env('DB_DATABASE', 'test2'),
        'username' => env('DB_USERNAME', ''),
        'password' => env('DB_PASSWORD', ''),
        'charset'  => 'utf8',
        'prefix'   => '',
    ],

我的主数据库是 test1,我需要在此处将其更改为 test2 数据库名称:

 public function TransactionHistory(Request $request){

    Config::set('database.default','sqlsrv2');

    dd(DB::connection() );
}

但它只有 returns null 并且它仍在读取测试 1。有人吗?

一种方法是使用 DB::connection() 方法更改连接:

$connection = DB::connection('sqlsrv2'); //this will create a database connection using sqlsrv2 in your config.

现在,您可以使用 $connection 来 运行 查询等

Reference :

如果你使用的是 Eluquent,还有更优雅的方式 Database Connection

  1. 为第二个连接创建另一个配置

`

   'connections' => array(

    # Our primary database connection
    'mysql' => array(
        'driver'    => 'mysql',
        'host'      => 'host1',
        'database'  => 'database1',
        'username'  => 'user1',
        'password'  => 'pass1'
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

    # Our secondary database connection
    'mysql2' => array(
        'driver'    => 'mysql',
        'host'      => 'host2',
        'database'  => 'database2',
        'username'  => 'user2',
        'password'  => 'pass2'
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),
);

`

  1. 在您的模型中设置连接:

`

namespace App;

use Illuminate\Database\Eloquent\Model;

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