Laravel 5:如何将数据库值加载到 config/services.php 文件中?

2023-12-29

我正在开发一个多租户应用程序,在添加社交包时,我尝试从数据库加载特定网站的自定义 facebook client_id 和 client_secret 。我无法真正使用环境变量,因为每个站点都有自己的自定义 facebook 键。

看来您无法真正在 config/services.php 文件上调用模型的方法,因为它可能尚未加载。我尝试浏览请求生命周期文档来解决此问题,但无济于事。

我还尝试创建一个服务提供程序来从我的业务模型的方法中获取值并将其设置为常量,但当它在应用程序中可用时,config/services.php 文件仍然已加载。

这是我想要可用的数据库值的地方:

配置/服务.php

'facebook' => [
  'client_id' => \App\Business::getAppKeys()->fb_client_id,
  'client_secret' => 'your‐fb‐app‐secret',
  'redirect' => 'http://your‐callback‐url',
],

Error:

致命错误:在 null 上调用成员函数 connection()


这是我正在谈论的内容的一个非常简单的例子。

使用以下内容,我可以在初始化应用程序的其余部分之前查询数据库,获取一些详细信息并将它们写入配置文件。

看看我如何能够访问路线中的值?

// app/Providers/ConfigServiceProvider.php

namespace App\Providers;

use App\Models\Country;
use Illuminate\Support\ServiceProvider;

class ConfigServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        $countries = Country::pluck('name', 'iso_code');
        config()->set(['app.countries' => $countries->toArray()]);
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}


// config/app.php

// ...

'providers' => [
    // ...
    App\Providers\ConfigServiceProvider::class,
    // ...
],

// ...


// routes/web.php

Route::get('config', function () {
    dd(config('app.countries'));
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 5:如何将数据库值加载到 config/services.php 文件中? 的相关文章