分类: MySQL 5.7
-
本文探讨了在 Yii 2.0 中处理表结构多重关联时,基于 ActiveDataFilter 实现查询过滤的方法。文章针对主表通过中间表与多张附表关联,且需最终依据附表关联的分类表字段进行过滤的场景,通过配置搜索模型的 attributeMap 设置不同关联别名,并修改序列化文件重置数据,实现了通过指定字段查询主表数据的最终目的。
-
文章介绍了在 Yii 2.0 中通过命令行生成数据库迁移类并为表添加多个字段的方法。通过遵循 add_xxx_to_yyy 的命名格式并配合 fields 参数,可自动生成包含 addColumn 和 dropColumn 的类文件。编辑该文件补充字段注释与顺序后,使用提交命令升级数据库结构,最终验证表设计符合预期。
-
本文探讨了在 Yii 2.0 框架中使用 ActiveDataFilter 实现对不存在字段的筛选参数支持。针对选题列表中通过程序计算得出的“是否已延期”字段需求,文章分析了计算规则并推导出待生成的查询 SQL。最终结论指出,若需让表中不存在的字段参与筛选,必须将其转换为表中已存在的字段,从而利用框架自带的底层实现,避免手动转换筛选参数。
-
本文针对产品部署时初始化数据的场景,介绍了如何在 MySQL 的 SQL 文件中定义与使用变量。由于多条 SQL 语句的执行依赖于前序语句生成的主键 ID,文章演示了通过变量传递参数的具体 SQL 写法,并记录了脚本运行前后的数据库表状态。最终验证显示脚本运行成功,各表中的记录 ID 值均符合预期,实现了数据的正确初始化。
-
本文介绍了在 Yii 2.0 中优化服务器健康检查实现的过程。通过分析源码发现,数据库检查中的 getIsActive() 方法是冗余的,直接使用 open() 方法即可。针对 Redis 连接,虽然 ping 命令常用于测试连接,但其实质仍需先执行 open()。经过错误密码测试验证后得出结论,为保持检测方式统一,无论是数据库还是 Redis,均应统一采用 open() 方法进行连接检查。
-
为了解决一次发布需分别调用多个渠道接口的问题,文章探讨了在 Yii 2.0 中实现一键多渠道发布的方案。对比了控制器内部调用与 HTTP 调用两种方式后,因架构隔离和安全限制,最终决定采用内部 HTTP 调用方案。通过修改控制器过滤器、编写服务类及 HTTP 模型类,实现了任务组的批量同步发布。经日志与数据库验证,该方案成功完成了对企鹅号、微信等渠道的批量写入,符合预期。
-
文章针对在 Yii 2.0 中实现跨多表数据唯一性验证的需求,通过核心验证器 unique 结合 filter 回调函数,利用匿名函数修改查询对象,将模型关联字段、常量状态以及请求参数数组存储为全局变量后注入验证逻辑,最终实现了针对文章标题与渠道任务关联条件的复杂唯一性校验,生成的 SQL 查询符合预期。
-
Navicat for MySQL 不支持直接编辑数据库名,文章通过先创建新数据库,再将原数据库的结构与数据导出为 SQL 文件并导入至新数据库,最后删除旧数据库的方式,实现了数据库重命名的操作,完成了新旧数据库结构与数据的迁移。
-
针对 Yii 2.0 中企鹅号任务发布后入库失败无法查询记录的问题,文章放弃了客户端冗余存储方案,采用新建预发布日志表并增大字段长度的设计。通过创建继承 ActionFilter 的过滤器,在动作执行后根据返回码非 10000 时插入记录,并利用 UNION ALL 语法合并查询结果,成功实现了入库成功与失败皆可查询的功能。
