Как использовать сторонние учетные данные службы из базы данных в Laravel 5.4? - PullRequest
0 голосов
/ 27 февраля 2019

Предположим, я использую несколько почтовых сервисов (например, Mailgun, Mailchimp и т. Д.), Теперь я хочу сохранить учетные данные каждого почтового сервиса в базе данных вместо config / service.php.Так что я могу звонить / использовать разные почтовые сервисы для отправки электронной почты в другой ситуации.

1 Ответ

0 голосов
/ 27 февраля 2019

Это может быть не решение, но это поможет наверняка. Хорошо, сначала создайте такую ​​базу данных

CREATE TABLE `mail_settings` (
  `id` int(10) UNSIGNED NOT NULL,
  `mail_driver` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `mail_host` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `mail_port` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `mail_username` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `mail_password` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `mail_encryption` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `deleted_at` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Те же поля, что и в .env

MAIL_DRIVER=
MAIL_HOST=
MAIL_PORT=
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=

Затем установите MailServiceProvider,

public function register()
{  
    if (\Schema::hasTable('mail_settings')) {
        //TRY TO MAKE THIS QUERY SOMEHOW DYNAMIC
        $mail = DB::table('mail_settings')->where('mail_driver','smtp.mailtrap.io')->first();
        if ($mail) //checking if table is not empty
        {
            $config = array(
                'driver'     => $mail->mail_driver,
                'host'       => $mail->mail_host,
                'port'       => $mail->mail_port,
                'from'       => array('address' => 'someemail@gmail.com', 'name' => 'someone'),
                'encryption' => $mail->mail_encryption,
                'username'   => $mail->mail_username,
                'password'   => $mail->mail_password,
            );
            Config::set('mail', $config);
        }
    }
}

Надеюсь, это поможет.

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