PHP网站配置(系统设置)数据库表结构及实现

网站后台一般少不了站点配置,一种方式是写到配置文件里,第二种是写到数据库,下面以写到数据库为例

数据库表结构

DROP TABLE IF EXISTS `option`;
CREATE TABLE `option` (
  `option_name` varchar(64) NOT NULL DEFAULT '' COMMENT '配置名',
  `option_value` varchar(1000) COMMENT '配置值',
  `option_explain` varchar(200)  NOT NULL COMMENT '配置说明',
  PRIMARY KEY (`option_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='全站配置表';

主键为配置名 option_name,配置值 option_value,即key-value对形式存储,其他字段根据需要自行扩充

查询配置

    /**
     * Notes:获取配置信息
     * @auther: xxf
     * Date: 2019/7/16
     * Time: 17:29
     * @param $key
     * @return array|\Illuminate\Cache\CacheManager|mixed
     */
    public static function cmf_get_option($key)
    {
        if (!is_string($key) || empty($key)) {
            return [];
        }
        $optionValue = cache('options_' . $key);

        if (empty($optionValue)) {
            $optionValue = self::where('option_name', $key)->value('option_value');
            if (!empty($optionValue)) {
                cache('cmf_options_' . $key, $optionValue);
            }
        }
        return $optionValue;
    }

前端显示,修改

name="data[{$vo.option_name}]"  将表单以数组方式提交到后台
{volist name="list" id="vo" key="k"}
{/volist} {:token()}
public function editOption(Request $request)
    {
        $data = $request->param('data');
        $opRes = $this->model->edit($data);
        return showMsg($opRes['tag'],$opRes['message']);

    }

public function edit($data)
    {
        $count = 0;
        foreach ($data as $k =>$v) {

            $res = $this->where('option_name',$k)->update(['option_value'=>$v]);
            //$res = $this->where('option_name','aa')->update(['option_value'=>23]);
            $res && $count++;
        }

        $validateRes['tag'] = $count > 0;
        $validateRes['message'] = $count > 0 ? '成功' : '失败';
        return $validateRes;
    }

 

你可能感兴趣的:(mysql,php,thinkPHP)