В .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, як згадував