Доступ к переменной конфигурации из env - PullRequest
2 голосов
/ 25 июня 2019

Я создаю приложение, в котором мне нужно работать над двумя ветками git.Для двух веток мне нужно поддерживать две базы данных, и каждый раз, когда я обращаюсь к другой ветке, мне нужно вручную менять базу данных из файла .env.(env файл включен в .gitignore файл)

Есть ли способ получить доступ к config переменным из env?Я попробовал это следующим образом:

DB_DATABASE="${config('database.database')}"

Но это не работает.

Примечание: я мог бы сделать это, изменив в config/database.php, но я в ограничении, поэтому пытаюсь найти другойспособ.

Ответы [ 3 ]

2 голосов
/ 25 июня 2019

Вместо изменения .env вы можете сделать несколько версий вашего config/database.php, где вы просто вводите настройки базы данных вместо использования env:

old:

'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),

новое:

'mysql' => [
            'driver' => 'mysql',
            'host' => '123.123.123.123',

Затем вы можете приступить к созданию тайников в вашем GIT и просто применить правильный в зависимости от того, в какой ветке вы находитесь.

0 голосов
/ 25 июня 2019

Я разработал решение для вас.Я попробовал это в моей среде, и это работает, как вы ожидаете.

Таким образом, в дополнение к тому, что сказал @Bram, вы можете создавать .env файлы, относящиеся к филиалам. Например,

.env.master и .env.develop.Добавьте оба к .gitignore.

Затем создайте ловушку git post-checkout:

vim .git/hooks/post-checkout

со следующим содержимым:

#!/bin/bash

printf '\npost-checkout hook\n\n'
BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)
cp .env.$BRANCH_NAME .env

Добавьте разрешения для файла:

chmod u+x .git/hooks/post-checkout

Теперь, когда вы оформляете свою ветку develop, содержимое файла .env будет от .env.develop и то же самое для мастера.Это наиболее автоматизированный способ, если только вы не хотите расширять файл Illuminate\Foundation\Application и таким образом изменять

protected $environmentFile = '.env';

.

0 голосов
/ 25 июня 2019

Другой подход заключается в том, чтобы иметь несколько .env файлов, содержащих ветвь в имени файла.

  • .env.production
  • .env.development

Не забудьте добавить эти файлы в свой .gitignore!

При переключении веток вы можете вручную изменить имя соответствующего .env.<branchname> обратно на .env.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...