Search code examples
codeignitercodeigniter-4

Codeigniter 4: Loading general settings from DB


I would like to load few general settings that is previously stored in Database (e.g. site language, site name etc.) and those settings will be used everywhere in the application. Previously in Codeigniter 3 I've done this by adding below code in application/config/config.php file.

require_once(BASEPATH . 'database/DB.php');
$db =& DB();
$config['general_settings'] = $db->get('general_settings')->row();
$config['languages'] = $db->get('languages')->result();
$db->close();

But I'm bit confused about to Codeigniter 4 where or in which file I should put this code to get expected result. Any suggestion please let we know.


Solution

  • After several attempts I got the way to overcome this issue.

    First need to create a Custom Config file in App/Config directory. Let’s say my Custom Config name is MyConfig.php

    <?php namespace Config;
        use CodeIgniter\Config\BaseConfig;
        use Config\Database;
        class MyConfig extends BaseConfig
        {
            public function __construct ()
            {
                parent::__construct();
                $db = Database::connect();
                    $get_general_settings = $db->query('SELECT * FROM general_settings');
                    $this->general_settings = $get_general_settings->getRow();
                    $get_languages = $db->query('SELECT * FROM languages');
                    $this->languages = $get_languages->getResult();
                $db->close();
            }
        }
    

    Now It can be used in any Controller or anywhere. Example: $myconfig = config('MyConfig');