2014-05-08 47 views
0

我試圖設置數據庫配置系統。 我裝上新的數據庫配置,負載組,並嘗試獲取字段的值:Kohana 3.3數據庫配置系統

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

但我只得到一個錯誤:

ErrorException [ Notice ]: unserialize(): Error at offset 0 of 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

這是因爲Config_Database預計配置值爲serialized。錯誤消息是說讀者無法對您請求的數據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) 
+0

瞭解。感謝您的詳細解答! –