В .env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database1
DB_USERNAME=root
DB_PASSWORD=secret
DB_CONNECTION_SECOND=mysql
DB_HOST_SECOND=127.0.0.1
DB_PORT_SECOND=3306
DB_DATABASE_SECOND=database2
DB_USERNAME_SECOND=root
DB_PASSWORD_SECOND=secret
В config/database.php
'mysql' => [
'driver' => env('DB_CONNECTION'),
'host' => env('DB_HOST'),
'port' => env('DB_PORT'),
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
],
'mysql2' => [
'driver' => env('DB_CONNECTION_SECOND'),
'host' => env('DB_HOST_SECOND'),
'port' => env('DB_PORT_SECOND'),
'database' => env('DB_DATABASE_SECOND'),
'username' => env('DB_USERNAME_SECOND'),
'password' => env('DB_PASSWORD_SECOND'),
],
Примітка: У mysql2разі DB_username і пароль_бази_данний таке ж, то ви можете використовувати , env('DB_USERNAME')який metioned в .envперших рядках.
Визначте з'єднання
app/config/database.php
return array(
'default' => 'mysql',
'connections' => array(
# Primary/Default database connection
'mysql' => array(
'driver' => 'mysql',
'host' => '127.0.0.1',
'database' => 'database1',
'username' => 'root',
'password' => 'secret'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
# Secondary database connection
'mysql2' => array(
'driver' => 'mysql',
'host' => '127.0.0.1',
'database' => 'database2',
'username' => 'root',
'password' => 'secret'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
),
);
Схема
Щоб вказати, яке з'єднання використовувати, просто запустіть connection()метод
Schema::connection('mysql2')->create('some_table', function($table)
{
$table->increments('id'):
});
Запитувальник
$users = DB::connection('mysql2')->select(...);
Красномовні
Встановіть $connectionзмінну у вашій моделі
class SomeModel extends Eloquent {
protected $connection = 'mysql2';
}
Ви також можете визначити з'єднання під час виконання за допомогою setConnectionметоду або onстатичного методу:
class SomeController extends BaseController {
public function someMethod()
{
$someModel = new SomeModel;
$someModel->setConnection('mysql2'); // non-static method
$something = $someModel->find(1);
$something = SomeModel::on('mysql2')->find(1); // static method
return $something;
}
}
Примітка. Будьте уважні до спроб встановлення зв’язків із таблицями в базі даних! Це можливо зробити, але це може бути з деякими застереженнями і залежить від того, які у вас є налаштування бази даних та / або бази даних.
Використання декількох підключень до бази даних
Під час використання декількох з'єднань ви можете отримати доступ до кожного connectionза допомогою методу з'єднання на DBфасаді. nameПередається connectionметоду повинен відповідати одному із з'єднань , перерахованих у вашому config/database.phpфайлі конфігурації:
$users = DB::connection('foo')->select(...);
Ви також можете отримати доступ до необмеженого базового екземпляра PDO, використовуючи метод getPdo в екземплярі з'єднання:
$pdo = DB::connection()->getPdo();
корисні посилання
- Laravel 5 з декількома підключеннями до бази даних ВІД
laracasts.com
- Підключіть кілька баз даних у laravel ВІД
tutsnare.com
- Кілька підключень БД в Laravel ВІД
fideloper.com
class SomeModel extends Model {а також переконайтесь, що ви видалили значення з файлу env, якenv('DB_DATABASE', 'name')під час створення нового масиву конфігурації БД у файлі database.php, як згадував