ThinkPHP uniapp 本地JSON数据 实现省市区三级联动

ThinkPHP + uni-app + uni-data-picker

环境
ThinkPHP版本:3.2.3
PHP版本:5.6
vue版本: vue3
数据库:MySQL5.7.40

省市区数据源

数据源giteee(json文件):city-china.json

数据库设计

1.uni-app的uni-data-picker每项数据之多只需要3个key:text,value,children
2.JSON文件与上下级关联的主要是code和parent_code,数据库可以从简设计
3.将数据保存至数据库,不需要每次都遍历一次JSON数组,消耗性能,同时分级查询省市区逻辑更清晰

数据库

省/直辖市

省/直辖市 的数据库只需要设计id,text,value,code四项就可以了,其中id主键

CREATE TABLE `你的数据库名`.`province_data` ( 
`id` INT(11) NOT NULL AUTO_INCREMENT , 
`text` VARCHAR(255) NOT NULL , 
`value` VARCHAR(255) NOT NULL ,
`code` VARCHAR(255) NOT NULL , PRIMARY KEY (`id`)
 );
市、区/县

市、区/县属于次级,数据库设计可以完全相同,但要记得做完事是3个数据表

CREATE TABLE `你的数据库名`.`city_data` ( 
`id` INT(11) NOT NULL AUTO_INCREMENT ,
`text` VARCHAR(255) NOT NULL , 
`value` VARCHAR(255) NOT NULL ,
`parent_code` VARCHAR(255) NOT NULL ,
`code` VARCHAR(255) NOT NULL , PRIMARY KEY (`id`)
);

ThinkPHP后端控制器

文件处理

将下载的data.json文件放在网站根目录下的随意文件夹内,我这边改名为city-china.json;
处理完成后可以将initCityData()在页面返回的JSON字符串保存下来,不再经过数据库
数据库在处理完JSON文件后的功能就是为前端所选的code匹配地名

public function execSaveCityData()
    {
   
        $file = json_decode(file_get_contents('./Uploads/documents/city-china.json'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值