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