Използване на .env
>=5.0
(Тестван на 5.5) (Работи на 8 )
В .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 и DB_password са еднакви, тогава можете да използватеenv('DB_USERNAME')
който се споменава в.env
първите няколко реда.
Без .env
<5.0
Дефиниране на връзки
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;
}
}
Забележка Бъдете внимателни при опитите за изграждане на връзки с таблици в бази данни! Възможно е да се направи, но може да дойде с някои предупреждения и зависи от това каква база данни и/или настройки на базата данни имате.
От Laravel Docs
Използване на множество връзки към база данни
Когато използвате няколко връзки, можете да получите достъп до всяка 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
- Множество DB връзки в Laravel ОТ
fideloper.com