Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да използвате множество бази данни в Laravel

Използване на .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();

Полезни връзки

  1. Laravel 5 връзка с множество бази данни ОТ laracasts.com
  2. Свързване на множество бази данни в laravel ОТ tutsnare.com
  3. Множество DB връзки в Laravel ОТ fideloper.com


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да конвертирате часовата зона в MySQL

  2. Хибернация 5 :- org.hibernate.MappingException:Неизвестен обект

  3. Как версирате вашата схема на база данни?

  4. JSON_VALID() – Тествайте за валиден JSON в MySQL

  5. Вземете разлика в годините между две дати в MySQL като цяло число