当前位置: 首页 > news >正文

过期知识:thinkphp5 使用migrate给现有的数据表新增表字段

个人开发网站记录, 这个文章主要是个以后健忘的我看的.
        我在搞我的画笔审核 , 发现数据表的画笔数据在审核驳回的时候还是软删除好一些, 
免得用户找不到之前上传的画笔数据, 后期也可以考虑重新显示给用户,让用户可以修改画笔信息重新提交审核.
        这个时候想起了thinkphp5 框架提供的软删除功能, 不过使用软删除时发现 我当时设计画笔表结构没有考虑到delete_time字段设置, 怪不得在使用软删除时,就觉得又会报错, 没字段,怎么能在数据表区分数据呢, 真觉得的自己时傻冒. 

        考虑到自己是使用migrate数据库迁移工具创建数据表的, 我如果手动在数据表用sql语句修改表结构, 到时候后面为将来新功能加新的数据表, 又会run报错. 以前不明白,现在总算明白run不成功的原因了.
        怎么用migrate给现有的数据表(已有数据)新增表字段,来实现软删除. 

先看我找到的指导文档ThinkPHP官方手册,(我这个找不到以前大佬的代码评论,我记得另一个官方手册有以前的大佬的代码评论) 

根据示例代码, 我给我的temphuabi临时画笔表开启了软删除功能, 

<?php
namespace app\api\model;
use think\Model;
use think\model\concern\SoftDelete;class TempHuabi extends Model
{use SoftDelete;protected $deleteTime = 'delete_time';protected $defaultSoftDelete = 0;
}

然后查询到对应的画笔数据
 $temp_huabi  = TempHuabiModel::where('status', 0)->where('id', $temp_huabi_id)->find();
$temp_huabi->delete(); //软删除

测试审核驳回接口,出现报错, 找不到我temp_huabi数据表的delete_time字段, (哦,原来表结构要有delete_time这个字段才能软删除)
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'ptx_temp_huabi.delete_time' in 'where clause'

为了不影响将来迁移创建新数据表, (结合查询文心与通义ai, 无意中发现的解决方案, ai给来给去都是不符合我的实际 , 不过通义它给了update(),我试了一下,发现使用中能被注释出来, 这代表能用. )

这里我创建多一个新的实例, 为了提醒, UpdataTempHuabi说明是更新TempHuabi数据表,

php think migrate:create UpdataTempHuabi

接下来在****_updata_temp_huabi.php文件中, 
选择现有的TempHuabi表,用update更新即可

 public function change(){$this->table('temp_huabi')   // 添加 delete_time 列->addColumn('delete_time', 'integer', ['null' => true, 'default' => 0, 'comment' => '删除时间戳'])->update();}

run运行迁移就行,这迁移没有出来错误.

php think migrate:run

显然已经更新了表结构了, 但是这个int(11)我感觉不怎么好 ,不过它确实给我现有的表数据都插多了这个字段,

 

 
但是实际使用软删除功能,没有成功,  报错为空, 
果然是上面时间戳类型设置错误了, 我应该跟  ->addTimestamps()一样用这个类型,
之前设置的字段删除,在迁移记录表中删除这一条数据 修正如下,应该用timestamp, 我真蠢, 类型设错,时间戳怎么放
 

  public function change(){$this->table('temp_huabi')   // 添加 delete_time 列->addColumn('delete_time', 'timestamp', ['null' => true,  'comment' => '删除时间戳'])->update();}


软删除delete一下,哦,删除时间戳总算出现了

再次查阅ThinkPHP官方手册,看到最下面的代码,,,,,,,
突然觉得我用迁移工具更新数据表字段delete_time的代码, 
应该放在up还是down方法里面, 而不是新建一个迁移文件, 虽然都能用, ,,,
暂时保留疑问

相关文章:

过期知识:thinkphp5 使用migrate给现有的数据表新增表字段

个人开发网站记录, 这个文章主要是个以后健忘的我看的. 我在搞我的画笔审核 , 发现数据表的画笔数据在审核驳回的时候还是软删除好一些, 免得用户找不到之前上传的画笔数据, 后期也可以考虑重新显示给用户,让用户可以修改画笔信息重新提交审核. 这个时候想起了…...

前端和Postman调用同一个接口,拿到的数据不一样

1、表现 联调一个List接口&#xff0c;Postman自测得到的ID和前端调用得到的ID&#xff0c;结果不一样。前者结果&#xff1a; 后者结果&#xff1a; 同一份代码、同一个数据库&#xff0c;出现这种错误&#xff0c;大概率是类型转换时出问题了&#xff0c;但检查代码发现&…...

1000W长连接,如何建立和维护?千万用户IM 架构设计

1000W长连接&#xff0c;如何建立和维护&#xff1f;千万用户IM 架构设计 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格&#xff0c;遇到很多很重要的架构类/设计类…...

vulhub:Apache解析漏洞CVE-2017-15715

Apache HTTPD是一款HTTP服务器&#xff0c;它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个换行解析漏洞&#xff0c;在解析PHP时&#xff0c;1.php\x0A将被按照PHP后缀进行解析&#xff0c;导致绕过一些服务器的安全策略。 #启动靶机 cd /Vulnhub/vulhub-mast…...

开发中可能会面临的真实问题及处理流程

接口返回数据不符合预期 问题描述&#xff1a;接口返回的数据结构或字段名称与前端预期不符&#xff0c;导致页面展示错误。 处理流程&#xff1a; 检查接口文档&#xff1a;确保前后端约定的接口文档是最新的&#xff0c;并且描述一致。 前后端沟通&#xff1a;与后端开发人员…...

个性化你的生产力工具:待办事项App定制指南

国内外主流的10款待办事项软件对比&#xff1a;PingCode、Worktile、滴答清单、番茄ToDo、Teambition、Todoist、Microsoft To Do、TickTick、Any.do、Trello。 在寻找合适的待办事项软件时&#xff0c;你是否感到选择众多、难以决断&#xff1f;一个好的待办事项工具可以大大提…...

本地部署持续集成工具Jenkins并配置公网地址实现远程自动化构建

文章目录 前言1. 安装Jenkins2. 局域网访问Jenkins3. 安装 cpolar内网穿透软件4. 配置Jenkins公网访问地址5. 公网远程访问Jenkins6. 固定公网地址 前言 本文主要介绍如何在Linux CentOS 7中安装Jenkins并结合cpolar内网穿透工具实现远程访问管理本地部署的Jenkins服务. Jenk…...

【数据结构】了解哈希表,解决哈希冲突,用Java模拟实现哈希桶

哈希表的概念 哈希表&#xff08;Hash Table&#xff09;是一种高效的数据结构&#xff0c;用于实现快速的数据存储和检索。它通过将数据映射到一个数组的索引位置&#xff0c;从而能够在平均情况下实现O(1)的时间复杂度进行查找、插入和删除操作。 哈希表的基本概念包括以下…...

qt5 ui转python或C++文件

firstMainWin.ui转换成.py文件&#xff0c;输入以下命令即可 pyuic5 -o firstMainWin.py firstMainwin. ui python -m PyQt5.uic.pyuic Img_ui.ui -o Img_ui.py firstMainWin.ui转换成c文件&#xff0c;输入以下命令即可 uic firstMainWin.ui -o hello.h ##用python转 新建…...

scp命令详解

scp&#xff08;secure copy&#xff09;是一个基于 SSH 的命令行工具&#xff0c;用于在不同计算机之间安全地复制文件和目录。scp 提供了在本地和远程主机之间传输文件的简单方法&#xff0c;并且支持加密和认证&#xff0c;确保文件传输的安全性。 基本用法 从本地复制到远…...

算法小白的进阶之路(力扣1~5)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…...

昇思25天学习打卡营第22天|MindSporeK基于Diffusion扩散模型学习- Diffusion与其他生成模型

Diffusion扩散模型 本文基于Hugging Face&#xff1a;The Annotated Diffusion Model一文翻译迁移而来&#xff0c;同时参考了由浅入深了解Diffusion Model一文。 本教程在Jupyter Notebook上成功运行。如您下载本文档为Python文件&#xff0c;执行Python文件时&#xff0c;请…...

【C++版本】protobuf与gRPC

文章目录 一、Protobuf二、安装以及使用protoc三、gRPC1.Q&A2.学习版rpc3.gRPC压缩算法 参考 一、Protobuf Google Protocol Buffers&#xff08;protobuf&#xff09;是一种语言中立、平台中立的序列化协议&#xff0c;旨在高效地将结构化数据进行序列化和反序列化。它主要…...

要抓住国际白银现货行情 以下这几点需要注意

国际白银现货行情最近表现不甚稳定&#xff0c;在七月上旬出现了比较强势的上涨&#xff0c;但随后出现强势的下跌&#xff0c;跌破了30关口。如果我们要抓住国际白银现货行情&#xff0c;那么以下这几点我们就需要注意。 一&#xff0c;建立交易计划&#xff0c;并且按计划执行…...

【计算机毕业设计】​720图书馆智能选座系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…...

java面向对象重点总结

文章目录 java面向对象重点总结类与实例构造方法方法重载属性与修饰符封装继承多态重构抽象类接口抽象类和接口的区别&#xff1a;集合泛型 java面向对象重点总结 对象是一个自包含的实体&#xff0c;用一组可识别的特性和行为来标识。 面向对象编程&#xff0c;英文叫Object…...

1321:【例6.3】删数问题(Noip1994)

大模拟 #include<bits/stdc.h> using namespace std; int s,len; char c[245]; int main(){cin>>c>>s;//读入高精度数和待删除的数lenstrlen(c);//1、寻找第一个下降序列的转折点&#xff0c;删去//2、如果找不到&#xff0c;意味着全部递增&#xff0c;删…...

使用 Python 中的 ELSER 进行Serverless 语义搜索:探索夏季奥运会历史

作者&#xff1a;来自 Elastic Essodjolo Kahanam 本博客介绍如何使用语义搜索以自然语言表达形式从 Elasticsearch 索引中获取信息。我们将创建一个无服务器 Elasticsearch 项目&#xff0c;将之前的奥运会数据集加载到索引中&#xff0c;使用推理处理器和 ELSER 模型生成推理…...

[HITCON 2017]SSRFme 1

目录 代码审计 符号shell_exec() 函数:GET " . escapeshellarg($_GET["url"])&#xff1a;pathinfo($_GET["filename"]basename() 题目解析 代码审计 118.182.186.90 <?phpif (isset($_SERVER[HTTP_X_FORWARDED_FOR])) {$http_x_headers explod…...

看不见的硝烟:中国网络安全三十年沉浮史

2022 年 5 月 16 日&#xff0c;俄罗斯黑客组织 KillNet 向包括美国、英国、德国在内 10 个国家的政府正式 “宣战”。 2022 年 4 月 28 日&#xff0c;一则消息刷屏&#xff0c;北京健康宝在使用高峰期间&#xff0c;遭受到境外网络攻击。北京健康宝保障团队进行了及时有效应…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

NPOI操作EXCEL文件 ——CAD C# 二次开发

缺点:dll.版本容易加载错误。CAD加载插件时&#xff0c;没有加载所有类库。插件运行过程中用到某个类库&#xff0c;会从CAD的安装目录找&#xff0c;找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库&#xff0c;就用插件程序加载进…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…...