Kohana 3.3数据库配置系统

时间:2014-05-08 21:09:42

标签: kohana kohana-3.3

我试图设置数据库配置系统。 我附加新的数据库配置,加载组并尝试获取字段值:

Kohana::$config->attach(new Config_Database);
$config = Kohana::$config->load('site');
$value = $config->get('title');
echo Debug::vars($value);

但我只得到一个错误:

  

ErrorException [注意]:unserialize():偏移0为16时出错   bytes MODPATH \ database \ classes \ Kohana \ Config \ Database \ Reader.php [64]

配置表结构:

CREATE TABLE IF NOT EXISTS `config` (
  `group_name` varchar(128) NOT NULL DEFAULT '',
  `config_key` varchar(128) NOT NULL DEFAULT '',
  `config_value` text,
  PRIMARY KEY (`group_name`,`config_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `config` (`group_name`, `config_key`, `config_value`) VALUES
('site', 'description', 'Description'),
('site', 'title', 'Test title');

请告诉我,有什么不对?

1 个答案:

答案 0 :(得分:1)

这是因为Config_Database期望配置值为serialized。错误消息表明Reader无法unserialize您请求的数据(因为您使用非序列化值为数据库播种)。您应该使用以下命令设置配置值:

$config->set('key', 'value')

例如:

Kohana::$config->attach(new Config_Database);
$config = Kohana::$config->load('site');       
$config->set('title', 'This is a title');

现在,如果我们查看数据库中的数据,您应该看到如下内容(注意config_value字段的格式):

mysql> select * from config;
+------------+------------+-------------------------+
| group_name | config_key | config_value            |
+------------+------------+-------------------------+
| site       | title      | s:15:"This is a title"; |
+------------+------------+-------------------------+
1 row in set (0.00 sec)