後臺動態配置config檔案

風吹過有夏天的味道發表於2020-12-18

建立 MyConfigServiceProvider

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Cache;
use App\MyConfig;

class MyConfigServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {
        $this->loadMyConfig();
    }

    protected function loadMyConfig(){
        // 獲取配置
        $myConfig =Cache::remember('my-config', 86400 * 7, function () {
            return MyConfig::query()->select('foo','bar')->first()->toArray();
        });
        // 合併配置
        $data = array_merge(config('my'),$myConfig);
        // 設定配置
        config(['my'=>$data]);
    }
}

在 config/app.php 檔案的 providers 陣列最後新增

\App\Providers\MyConfigServiceProvider::class,

ps 在修改配置資料時,不要忘記刪除快取鍵

本作品採用《CC 協議》,轉載必須註明作者和本文連結
喜歡的話就點個贊吧!

相關文章