dsizd368332 2016-03-23 15:22
浏览 359
已采纳

Laravel 5.2同时使用两个不同的数据库连接(sqlsrv + mysql)

I would like to do something like this when i use a model

class DB extends Model {

Protected $table = "mssql_table";
}

DB::useConnection("mssql")->All();

As far as configuration goes i've found out that I can add it myself in app/config/database.php

And so I did.

So now i've got this in my connetions:

'mssql' => [
    'driver' => 'sqlsrv',
    'host' => env('DB_MSSQL_HOST', 'localhost'),
    'port' => env('DB_MSSQL_PORT', '3306'),
    'database' => env('DB_MSSQL_DATABASE', 'forge'),
    'username' => env('DB_MSSQL_USERNAME', 'forge'),
    'password' => env('DB_MSSQL_PASSWORD', ''),
    'charset' => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix' => '',
    'strict' => false,
    'engine' => null,
],

and this to my .env file

DB_MSSQL_HOST=
DB_MSSQL_PORT=
DB_MSSQL_DATABASE=
DB_MSSQL_USERNAME=
DB_MSSQL_PASSWORD=

But what is the next step? google didnt really help me that much, in laravel 4.* you could use db::connection(); but it dosent seem to work anymore

Any ideas?

  • 写回答

2条回答 默认 最新

  • dpjo15650 2016-03-23 15:50
    关注

    First, you need to set-up one or more databases in your config (be sure to change values, I just pretty much copied and pasted):

    'db1' => [
        'driver' => 'sqlsrv',
        'host' => env('DB_MSSQL_HOST', 'localhost'),
        'port' => env('DB_MSSQL_PORT', '3306'),
        'database' => env('DB_MSSQL_DATABASE', 'forge'),
        'username' => env('DB_MSSQL_USERNAME', 'forge'),
        'password' => env('DB_MSSQL_PASSWORD', ''),
        'charset' => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix' => '',
        'strict' => false,
        'engine' => null,
    ],
    
    'db2' => [
        'driver' => 'sqlsrv',
        'host' => env('DB_MSSQL_HOST', 'localhost'),
        'port' => env('DB_MSSQL_PORT', '3306'),
        'database' => env('DB_MSSQL_DATABASE', 'forge'),
        'username' => env('DB_MSSQL_USERNAME', 'forge'),
        'password' => env('DB_MSSQL_PASSWORD', ''),
        'charset' => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix' => '',
        'strict' => false,
        'engine' => null,
    ],
    

    Then of course, you're going to need to create some migration schema for the newly added database (you need tables, etc.):

    Schema::connection('db2')->create('table_name', function($table)
    {
        $table->increments('id');
        ...
    });
    

    Now in your Eloquent model, you can define what database you want to use like so:

    class ModelName extends Eloquent {
    
        protected $connection = 'db2';
    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?