Как использовать несколько соединений с БД, используя .env в Lumen 5.5 ..?

Я установил Lumen 5.5 и настроил .env:

APP_ENV=local
APP_DEBUG=true
APP_KEY=2gh4RD89kWa87clEs6Vhjso3XhsFo3dR
APP_TIMEZONE=UTC

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=XXXXXX
DB_USERNAME=XXXXXX
DB_PASSWORD=XXXXXX

CACHE_DRIVER=memcached
QUEUE_DRIVER=sync

и создал модель, используя Eloquent:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Test extends Model {

public $timestamps = false;
protected $connection = 'foo';
}

Сейчас на официальном сайте нет документации по настройке соединения с несколькими БД в .env файл. Мое одиночное соединение работает отлично, но теперь мне нужно добавить еще одну информацию о подключении к БД.

Что я пробовал до сих пор:

  1. Создан файл конфигурации базы данных как app/config/database.php с несколькими деталями дБ, но мои настройки не будут затронуты, что бы я ни написал в этом файле. Это только с помощью .env чтобы получить детали подключения.

  2. Попытка добавить несколько деталей подключения БД в .env файл как:

    DB_CONNECTION = MySQL
    DB_HOST = 127.0.0.1
    DB_PORT = 3306
    DB_DATABASE = XXXXXX
    DB_USERNAME = XXXXXX
    DB_PASSWORD = XXXXXX

    FOO_DB_CONNECTION = MySQL
    FOO_DB_HOST = 127.0.0.1
    FOO_DB_PORT = 3306
    FOO_DB_DATABASE = FOOXXXXXX
    FOO_DB_USERNAME = FOOXXXXXX
    FOO_DB_PASSWORD = FOOXXXXXX

    DB_CONNECTION_FOO = MySQL
    DB_HOST_FOO = 127.0.0.1
    DB_PORT_FOO = 3306
    DB_DATABASE_FOO = FOOXXXXXX
    DB_USERNAME_FOO = FOOXXXXXX
    DB_PASSWORD_FOO = FOOXXXXXX

Но это просто продолжает давать мне эту ошибку:

(1/1) InvalidArgumentException
Database [foo] not configured.

Я перепробовал все, что нашел на Google. Пожалуйста, помогите мне..!!

2

Решение

Способ, который я настроил в своем проекте (он находится в Lumen 5.4), выглядит следующим образом:

в config/database.php

'pgsql' => [
'driver'   => 'pgsql',
'host'     => env('DB_HOST', 'db'),
'port'     => env('DB_PORT', 5432),
'database' => env('DB_DATABASE', 'service_db'),
'username' => env('DB_USERNAME', 'service_user'),
'password' => env('DB_PASSWORD'),
'charset'  => env('DB_CHARSET', 'utf8'),
'prefix'   => env('DB_PREFIX', ''),
'schema'   => env('DB_SCHEMA', 'public'),
],

'pgsql2' => [
'driver'   => 'pgsql',
'host'     => env('DB_HOST2', 'db'),
'port'     => env('DB_PORT', 5432),
'database' => env('DB_DATABASE2', 'service_db'),
'username' => env('DB_USERNAME2', 'service_user'),
'password' => env('DB_PASSWORD2'),
'charset'  => env('DB_CHARSET', 'utf8'),
'prefix'   => env('DB_PREFIX', ''),
'schema'   => env('DB_SCHEMA2', 'public'),
],

Я создал 2 соединения с 2 разными именами, и каждое соединение указывает на свою переменную env для db host / database / username / password / schema. Если это не поможет, опубликуйте файл database.php.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]