данные конфигурации, хранящиеся в базе данных

#database #codeigniter #config

#База данных #codeigniter #конфигурация

Вопрос:

Возможно, я запускаю совершенно неправильное дерево, поэтому простите меня, если это совсем не так, как я должен делать.

В моей базе данных есть таблица конфигурации, которая должна содержать сведения о конфигурации моего веб-сайта. Я хочу загрузить эти данные в config.php файл для code igniter?

Это то, что я должен делать, или совершенно неправильно?

Если я помещу вызов базы данных в начало config.php файл будет ли это вызываться каждый раз, когда кто-то загружает сайт, или только в первый раз?

Извините, если это звучит совершенно глупо, я немного запутался.

Редактировать

Я не имею в виду данные базы данных, например, хочу сохранить что-то вроде количества сообщений, которые будут отображаться на странице. Скрипт, который я создаю, должен использоваться более чем на одном сервере, например, количество записей на странице должно быть доступно для редактирования. Я мог бы, конечно, загрузить это в сеанс, но я думал, что загружаю это как константу *? в файле конфигурации было бы лучшей идеей.

Ответ №1:

Вот как я это делаю:

Во-первых, наша модель:

 <?php if (!defined('BASEPATH')) exit('No direct script access allowed');
  

.

 class Prefs extends CI_Model
{
    function __construct()
    {
        parent::__construct();      
        $pre = array();
        $CI = amp;get_instance();

        if ($this->config->item("useDatabaseConfig")) {
            $pr = $this->db->get("settings")->result();     
            foreach($pr as $p)
            {
                $pre[addslashes($p->key)] = addslashes($p->value);
            }       
        }
        else
        {
            $pre = (object) $CI->config->config;
        }   
        $CI->pref = (object) $pre;      
    } 
}
  
  • Автоматическая загрузка этой модели.
  • в вашем config/config.php , добавьте эту строку (или другую пользовательскую, если вы ее используете): $config["useDatabaseConfig"] = true;

В вашей базе данных вам нужна таблица «настройки» со столбцами «ключ» и «значение».

Вот и все. С помощью этой модели вы можете установить, когда вы хотите использовать базу данных и когда продолжаете использовать файлы config / *.php.

Скажем, вы можете изменить $config["useDatabaseConfig"] переменную прямо перед вызовом этого метода модели (тогда автозагрузка должна быть отключена.)

Я передаю переменную экземпляру CI просто потому, что это проще и приятнее.
Прочитайте данные конфигурации следующим образом: $this->pref->sess_cookie_name

Ответ №2:

Вы могли бы создать новую модель, которая извлекает параметры конфигурации из базы данных, а затем автоматически загрузить эту модель, чтобы она была доступна во всем мире. Затем вы могли бы получить доступ к своим параметрам через $this->model_name->function_name($db_column); и иметь $db_column имя столбца для параметра, который вы ищете, и чтобы ваша функция модели выбирала и возвращала данные столбца.

Лично я использую пользовательский конфигурационный файл:
http://codeigniter.com/user_guide/libraries/config.html

Ответ №3:

Это то, чего вам не следует делать. Вызов базы данных выполняется каждый раз, когда выполняется запрос, и вы не можете сохранить учетные данные базы данных в самой базе данных.

Комментарии:

1. Я не имею в виду данные базы данных, например, хочу сохранить что-то вроде количества сообщений, которые будут отображаться на странице. Скрипт, который я создаю, должен использоваться более чем на одном сервере, например, количество записей на странице должно быть доступно для редактирования. Я мог бы, конечно, загрузить это в сеанс, но я думал, что загружаю это как константу *? в файле конфигурации было бы лучшей идеей.