我打算在mail.php
中使用我的新serviceProvider,因为我需要从数据库而不是.env
中获取值。我可以在这个网站上显示一个解决方案,一个人创建了一个serviceProvider,并获得他所需的所有数据。
我的问题是,如何在mail.php中使用此提供程序?
我的提供商:
public function register()
{
if (Schema::hasTable('app_settings')) {
$mail = DB::table('app_settings')->first();
if ($mail) //checking if table is not empty
{
$config = array(
'driver' => $mail->driver,
'host' => $mail->host,
'port' => $mail->port,
'from' => array('address' => $mail->from_address, 'name' => $mail->from_name),
'encryption' => $mail->encryption,
'username' => $mail->username,
'password' => $mail->password,
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,
);
Config::set('mail', $config);
}
}
}
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
//
}
mail.php
例如:'driver' => env('MAIL_DRIVER', 'smtp'),
如何将提供商的驱动程序调用到驱动程序邮件中.php
感谢您的帮助,奖励
你做不到,这不是一个好主意。
最简单的方法是在加载完所有内容后覆盖您的配置。
您可以使用AppServiceProdiver.php
文件,在boot()
功能中:
public function boot()
{
// adapt of course...
$yourConfig = DB::select('SELECT * FROM your_config_table');
config()->set([
'app.mail.driver' => $yourConfig[0]->value
]);
}