在我的应用程序中,我使用这种结构:
CREATE TABLE `general_settings` (
`setting_key` varchar(255) NOT NULL,
`setting_group` varchar(255) NOT NULL DEFAULT 'general',
`setting_label` varchar(255) DEFAULT NULL,
`setting_type` enum('text','integer','float','textarea','select','radio','checkbox') NOT NULL DEFAULT 'text',
`setting_value` text NOT NULL,
`setting_options` varchar(255) DEFAULT NULL,
`setting_weight` int(11) DEFAULT '0',
PRIMARY KEY (`setting_key`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
示例数据:
mysql> select * from general_settings;
+-----------------------------+---------------+------------------------------+--------------+-------------------------------+---------------------------------------+----------------+
| setting_key | setting_group | setting_label | setting_type | setting_value | setting_options | setting_weight |
+-----------------------------+---------------+------------------------------+--------------+-------------------------------+---------------------------------------+----------------+
| website_name | website | Website Name | text | s:6:"DeenTV"; | NULL | 1 |
setting_value
我在列中存储了一个序列化值。我从 wordpress 中得到了这个技巧来保存数据库中的设置。
setting_options
列用于select
、radio
或checkbox
setting_type
。它将包含一个序列化的数组值。在 admin 中,此值将显示为选项,因此 admin 可以选择其中之一。
由于我使用 CodeIgniter,我有一个模型可以从特定的 中获取单个值setting_key
,因此它非常易于使用。