You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.5 KiB
3.5 KiB
课程URL更新命令使用说明
功能描述
这个Laravel命令 UpdateCourseUrls 用于从Excel文件读取课程信息,并自动更新数据库中课程的URL字段。
主要功能
- Excel文件解析: 读取Excel文件中的课程数据和跳转链接信息
- 数据匹配: 从
phome_ecms_news表中根据跳转链接匹配title字段,获取对应的titleurl - 智能匹配: 支持精确匹配、模糊匹配和相似度匹配三种方式
- 批量更新: 将获取到的titleurl批量更新到
courses表的url字段
命令使用方法
基本用法
php artisan update:course-urls
指定Excel文件
php artisan update:course-urls "your_excel_file.xlsx"
Excel文件格式要求
Excel文件需要包含以下列:
- 课程: 包含课程名称的列
- 跳转链接: 包含需要匹配的标题的列
文件可以包含多个工作表,命令会自动处理所有工作表。
匹配逻辑
1. 新闻标题匹配(从phome_ecms_news表)
- 精确匹配: 直接匹配title字段
- 模糊匹配: 使用LIKE进行部分匹配
- 相似度匹配: 使用Levenshtein算法计算字符串相似度,自动选择相似度最高的记录
2. 课程名称匹配(更新courses表)
- 精确匹配: 直接匹配name字段
- 模糊匹配: 使用LIKE进行部分匹配
- 相似度匹配: 使用Levenshtein算法计算字符串相似度,自动选择相似度最高的记录
特殊处理
- 软删除过滤: 只处理未被软删除的课程记录
- 空值检查: 自动跳过空的课程名称或跳转链接
- 重复更新: 如果课程已有URL,会被新的URL覆盖
- 详细日志: 提供详细的处理日志,包括匹配方式和相似度信息
- 失败统计: 自动显示匹配失败的课程名称列表
相似度算法说明
相似度计算使用多种策略:
- Levenshtein距离: 计算字符编辑距离
- 包含检查: 如果一个字符串包含另一个,会提高相似度
- 预处理: 移除空格并转换为小写进行比较
示例输出
开始处理文件: 课程台账.xlsx
Excel文件包含 2 个工作表
正在处理工作表: Sheet1
工作表 Sheet1 有 10 行,最高列为 C
表头: 序号, 课程, 跳转链接
找到课程列: 2,跳转链接列: 3
处理行 2: 课程='Python基础课程', 跳转链接='Python编程入门教程'
通过相似度匹配找到 (相似度: 85.7%): 'Python编程入门教程完整版' -> '/news/python-tutorial-2024'
✓ 成功更新课程 'Python基础课程' 的URL为: /news/python-tutorial-2024
工作表 Sheet1 中匹配失败的课程:
- 高级数据分析课程
- 机器学习实战
处理完成,总共更新了 6 条记录
注意事项
- 确保Excel文件位于项目根目录或提供正确的文件路径
- 确保数据库连接正常,特别是
phome_ecms_news表的访问权限 - 建议在执行前备份
courses表的数据 - 相似度匹配会自动选择最高相似度的记录,无需设置阈值
- 命令会显示所有匹配失败的课程名称,便于后续手动处理
错误处理
命令包含完善的错误处理机制:
- 文件不存在检查
- 数据库连接错误处理
- Excel格式错误处理
- 详细的错误日志输出
数据库表结构要求
phome_ecms_news表
title: 新闻标题字段titleurl: 新闻URL字段
courses表
name: 课程名称字段url: 课程URL字段(会被更新)deleted_at: 软删除时间戳字段