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 outlook无法配置成功
  • ¥15 Pwm双极模式H桥驱动控制电机
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换