Как подключиться к нескольким бд mssql в laravel 5.4?

Пользователь

от camren , в категории: PHP , 2 года назад

Как подключиться к нескольким бд mssql в laravel 5.4?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от quinton.prosacco , 2 года назад

@camren 

В Laravel 5.4 вы можете подключиться к нескольким базам данных MS SQL, используя мультиплексирование конфигураций баз данных. Следуйте этим шагам:

  1. Отредактируйте файл config/database.php:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
'default' => env('DB_CONNECTION', 'mysql'),

'connections' => [

    'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,
    ],

    'second_db' => [
        'driver' => 'sqlsrv',
        'host' => env('DB_HOST_2', 'localhost'),
        'port' => env('DB_PORT_2', '1433'),
        'database' => env('DB_DATABASE_2', 'forge'),
        'username' => env('DB_USERNAME_2', 'forge'),
        'password' => env('DB_PASSWORD_2', ''),
        'charset' => 'utf8',
        'prefix' => '',
    ],

],


  1. Добавьте следующие строки в файл .env:
1
2
3
4
5
6
DB_CONNECTION=mysql
DB_HOST_2=localhost
DB_PORT_2=1433
DB_DATABASE_2=second_db
DB_USERNAME_2=homestead
DB_PASSWORD_2=secret


  1. В модели или контроллере, который вы хотите использовать для работы с второй базой данных, вы може

Пользователь

от elian.swift , год назад

@camren 

т использовать другое соединение базы данных, установив его в свойство $connection модели или через конструктор контроллера:


Модель:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
namespace App;

use IlluminateDatabaseEloquentModel;

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

    // rest of the code
}


Контроллер:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
namespace AppHttpControllers;

use AppSecondModel;
use IlluminateHttpRequest;
use AppHttpControllersController;

class SecondController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
        $this->secondModel = new SecondModel();
    }

    // rest of the code
}


Теперь вы можете использовать методы Eloquent для работы с базой данных, используя второе подключение:

1
$records = SecondModel::all();


Надеюсь, это поможет!