雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

TP6.0 模型JSON字段的使用 【系统配置表 key-value】

2024-09-11 30

1. 数据表结构


CREATE TABLE `config` (  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',  `uniacid` int(11) DEFAULT NULL COMMENT '平台ID',  `type` varchar(60) DEFAULT NULL COMMENT '配置分组',  `key` varchar(255) NOT NULL COMMENT '配置键',  `value` text COMMENT '配置值',  `delete_time` int(11) DEFAULT NULL COMMENT '软删除',  `create_time` int(11) NOT NULL COMMENT '创建时间',  `update_time` int(11) DEFAULT NULL COMMENT '更新时间',  PRIMARY KEY (`id`) USING BTREE,  UNIQUE KEY `uniacid` (`uniacid`,`key`) USING BTREE COMMENT '每个平台下的key唯一') ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='系统配置表';

2. 定义系统配置表模型


<?phpdeclare(strict_types=1);namespace app\index\model;use think\Model;/** * 系统配置表模型 *  * @mixin \think\Model */class Config extends Model{    // 设置json类型字段    protected $json = ['value'];    // 设置JSON数据返回数组    protected $jsonAssoc = true;    // +------------------------------------------------    // | 模型事件    // +------------------------------------------------    /**     * 新增前     */    public static function onBeforeInsert($model)    {        // 当value是字符串时,框架没有对数据进行json编码处理,此时需要自己手动处理        if (is_string($model->value)) {            $model->value = json_encode($model->value, JSON_UNESCAPED_UNICODE);        }    }}

3. 测试数据


$data = [    [        'key' => 'name',        'value' => '辰风沐阳',    ],    [        'key' => 'age',        'value' => 20,    ],    [        'key' => 'info',        'value' => [            'city'     => 'henan',            'nickname' => 'liang',        ],    ],];(new ConfigModel)->saveAll($data);halt(ConfigModel::select()->toArray());
更新于:1个月前
赞一波!

文章评论

评论问答