[TOC]
## 【字段删除·思路分析】
> 涉及两个数据表(models_field和test)
1、删除models_field表中记录
2、删除副表中相应字段
重难点:通用的函数table_exists
模型主要负责数据处理,返回整型值
控制器主要负责业务员逻辑判断,通常用switch……case……default判断
## 【SQL修改某字段值】
~~~
UPDATE tp_models_field SET issystem = 0 WHERE modelid=31;
~~~
## 【整合公共函数·显示所有数据表】
> 整合前代码:
~~~
public function list_tables(){
$tables = array();
$data = Db::query('SHOW TABLES');
foreach ($data as $value) {
$tables[] = $value['Tables_in_' . config('database.database')];
}
return $tables;
}
~~~
> 整合后代码:【整合公共函数·显示所有数据表】
~~~
公共函数代码:application应用目录下面common.php
/**
* [table_exists 检测数据表是否存在]
* @param string $tablename [表名,不含前缀]
* @return [bool] [存在返回true,不存在返回false]
*/
function table_exists($tablename='')
{
//获取所有数据表名
$tables = [];
$data = Db::query('SHOW TABLES');
foreach ($data as $value) {
$tables[] = $value['Tables_in_'.config('database.database')];
}
//获取表前缀
$dbPrefix = config('database.prefix');
//当前的表名
$tablename=$dbPrefix.$tablename;
if(in_array($tablename,$tables)){
return true; //存在
}else {
return false; //不存在
}
}
~~~
## 【完整代码】
> 控制器代码:
~~~
/**
* [delete 删除字段]
* @param integer $id [字段ID]
* @return [type] [提示信息]
*/
public function delete($id=0, $modelid=0){
if(0 == $id){
return error('该字段不存在');
}
//实例化字段模型
$modelsfield = new ModelsFieldModel;
$resultId = $modelsfield->deleteField($id);//返回状态码
switch ($resultId) {
case -1:
return error('该字段不存在!');
break;
case -2:
return error('数据表不存在!');
break;
case -3:
return error('该字段不允许被删除!');
break;
default:
return success('字段删除成功',url('index',array('id'=>$modelid,'tab'=>1)));
break;
}
}
~~~
> 模型代码:
~~~
/**
* [deleteField 删除字段,需删除models_field表中记录以及副表相应字段]
* @param [int] $fieldid [字段ID]
* @return [int] [状态码]
*/
public function deleteField($fieldid){
$info = Db::name('models_field')->where('id',$fieldid)->find();
if(empty($info)){
return -1; //该字段不存在
exit;
}
//判断副表是否存在
$modelid = $info['modelid'];
$modelname = Db::name('models')->where('id',$modelid)->value('tablename');
if(!table_exists($modelname)){
return -2; //副表不存在
exit;
}
//判断是否允许删除
if(1 == $info['issystem']){
return -3; //该字段不允许被删除
exit;
}else{
//删除models_field表中记录
Db::name('models_field')->where('id',$fieldid)->delete();
//删除副表中相应字段
$dbPrefix = config('database.prefix');
Db::execute("ALTER TABLE `{$dbPrefix}{$modelname}` DROP COLUMN `{$info['field']}` ;");
}
}
~~~
> 【sublime text安装自动补全注释的插件】
https://blog.csdn.net/baidu_38300480/article/details/79379795
https://www.cnblogs.com/qingkong/p/5039527.html
https://www.cnblogs.com/feifei-cyj/p/7718793.html
1、重启sublime text 3,快捷键Ctrl + Shift + P ,在输入框中出入pack..找到Install Package。
2、点击Install Package,在输入框中,安装DocBlockr插件。
3、安装成功之后,Preferences->Package Settings->DocBlockr->Settings-User,在文件中添加以下代码并保存:
{
"jsdocs_extra_tags":["@author lucky","@DateTime {{datetime}}"]
}
- Layer无刷新不跳转弹框提示信息
- 整合ThinkPHP+实用代码
- TP整合Layer插件实现无刷新
- 自定义助手函数
- 添加信息失败后不跳转
- 三种无限级分类
- TP常用代码
- 自定义公共函数
- TP模型管理专题
- TP模型管理之添加模型
- sfox_newmodel.sql
- TP模型管理之删除模型
- TP模型管理之编辑模型
- TP模型管理之字段添加
- sfox_newmodel.sql_edit
- layer_hplus.js_edit
- TP模型管理之字段删除
- TP模型管理之字段编辑
- TP模型管理之预览模型
- TP模型管理之公共函数
- layer_hplus.js_修订一
- TP模型管理之预览模型静态页
- 后台内容管理系统
- 分类树显示
- 内容列表显示
- 信息发布
- 编辑信息
- layer_hplus.js
- myJs第一版
- myJs第二版
- myJs第三版
- myJs第四版
- TP5插件用法
- Datatables
- WebUploader
- bootstrap-fileinput
- UEditor
- 简单调用
- 路径问题
- 跨域多图上传
- 跨域单图上传
- UEditor图片跨域上传解决方案
- 定制工具栏图标
- ajaxFileUpload
- LayUI
- 图片上传
- layui分页
- 搜索页
- 搜索优化及删除
- Uploadify
- TP5前端应用
- 静态首页
- 前台首页功能实现
- 自定义标签库
- 前台模板继承应用
- 首页自定义标签改进
- 文章内容页
- 自定义标签改进
- 自定义标签修正
- 图片等比例自动缩放
- 后台权限管理
- 角色管理
- 规则管理
- 权限设置
- 会员管理
- 权限管理
- 前台登录注册功能
- 注册登录
- 阿里大于手机注册
- 阿里大于升级阿里云短信服务
- 自动登录完成
- PHP异位或加密实现自动登陆
- 微信开发
- 分享接口
- 静态页面实现微信分享
- 动态页微信分享
- 页面静态化
- 1-全站静态化前期配置
- 2-链接地址静态化
- TP5常用片段代码
- 加载静态资源路径与常量
- thinkphp5预定义常量
- 删除某文件夹的内容
- 解压插件包
- 异步提交插件
- 其他功能
- 背景音乐
- 手机访问PC网站自动跳转到手机网站代码
- 手机微信音乐MP3播放器
- 后盾之网页背景音乐
- 播放器宽度自适应
- 前台首页数据调用
- 视频列表
- 搜索分页
- H5解决苹果(IOS)不能自动播放音乐
- 清空缓存
- 文件处理常识
- 删除路径下的所有文件夹和文件
- 一键清空缓存
- 评论留言
- 格式化时间
- 替换微博内容的URL地址@用户与表情
- PHP正则理解
- jQuery评论插件
- TP空操作
- TP路由
- 跨域访问
- 设置请其头允许跨域请求
- 模板前台判断手机访问跳转手机网址代码
- PHP遍历一个文件夹下所有文件和子文件夹
- PHP获取视频的第一帧与时长
- TP5数据库
- 链式操作原理
- update替换字段部分内容
- 后台开发
- 后台登录页居中显示
- TP5自带验证码
- JS & JQuery专题
- 二级城市联动菜单
- 模板引擎
- 混合模板编译
- 黄永成TP微博开发
- 消息推送
- memcache安装
- 插件开发
- 插件介绍
- 插件钩子
- 浅谈初步理解钩子
- 插件钩子(hooks)分析
- 插件钩子简单理解
- 控制器调用插件
- 钩子通用处理函数
- 插件基类代码
- 插件测试代码
- 浅谈钩子与插件
- 技术综合
- 常用代码
- PHP
- 56个PHP开发常用代码片段(上)
- 56个PHP 开发常用代码片段(中)
- 56个PHP 开发常用代码片段(下)
- sublime text安装自动补全注释的插件
- 影音视频开发
- 视频
- H5视频直播扫盲
- 音乐
- 语音
- PHP实现语音播报功能
- MUI
- 窗体操作