laoyang
835f2846f2
取消「票根」概念,并入观影照片(数据迁移 220 条)(#87)
用户:现在不是已经没有票根的概念了吗?全部都换成观影照片了。别管是票根
还是观影照片,都在一起。现在只分两类:一类是海报,一类是观影照片。
海报是来自豆瓣的,这个不用管它,主要就是观影照片,所有的都在观影照片里边。
事实核查:概念取消了,数据没取消。网页端 v35 只在**模板层**把它们画进
同一个网格,数据层仍是两条路:票根在 movie_details.ticket_key(单张槽位),
不在 event_photos 里 ⇒ 没有 id ⇒ 删不掉,端上得写"票根另算"特判。
线上数据:有票根 220 条,其中 209 条只有票根、没有任何照片;
event_photos 总数才 14 —— 也就是说「观影照片」里装的几乎全是票根。
① 数据迁移(已执行,220/220 成功,失败 0):
逐条把 ticket_key 插进 event_photos(position 取比现有最小值再小 10,
⇒ 排第一,因为票根是"这场电影的凭证",用户认知里排最前),然后置 NULL。
event_photos 14 → 234,旧票根残留 0。
⚠️ 幂等:靠"该 key 已在该 event 的 event_photos 里"判断,重复跑不插重复行;
⚠️ 不删存储对象:只搬引用,图片原地不动,失败也不丢图。
② 同一段逻辑写进 Schema VERSION 36→37,让新库/重装库走同一套,
不靠"记得手工跑脚本"。对线上是空操作(已验证 234→234)。
③ 服务端停止读写票根字段(字段保留作历史审计,代码不再碰):
- Movie::find 不再 SELECT ticket_key;
- Movie::saveDetails UPSERT 去掉 ticket_key;
- Movie::destroy 不再单独查/删票根对象(已并入 photos 循环);
- index.php:上传槽位 [poster,ticket] → [poster],
stage_ticket 不再认领,media_del 白名单只剩 poster;
- form.php:删票根特殊格子 + mv-del-ticket 表单 + $mHasTicket;
- show.php:删票根格子 + 灯箱 ticket 项 + $hasTicket。
验证:find(1,1)/find(1,224) 已不返回 ticket_key,photos 3/4 条票根在首位;
直接 include 模板无 Fatal,form.php 里 mv-del-ticket / stage_ticket 各 0 次;
6 个文件 md5 逐个核对一致、php -l 全过、已上线且升级到 37。
2026-11-06 11:25:47 +08:00
..
2026-11-05 13:06:29 +08:00
2026-09-30 00:49:53 +08:00
2026-09-30 13:24:26 +08:00
2026-11-05 20:57:24 +08:00
2026-10-19 12:51:17 +08:00
2026-10-18 03:34:47 +08:00
2026-11-06 11:10:07 +08:00
2026-10-18 03:34:47 +08:00
2026-11-05 13:01:39 +08:00
2026-11-01 19:55:40 +08:00
2026-10-02 09:28:07 +08:00
2026-10-03 08:18:05 +08:00
2026-10-05 10:58:17 +08:00
2026-10-05 10:58:17 +08:00
2026-10-05 10:58:17 +08:00
2026-11-01 19:55:40 +08:00
2026-10-15 20:19:09 +08:00
2026-11-05 17:26:37 +08:00
2026-10-13 11:53:58 +08:00
2026-10-06 20:41:04 +08:00
2026-10-01 00:12:04 +08:00
2026-10-13 11:53:58 +08:00
2026-10-17 00:15:06 +08:00
2026-09-30 00:49:53 +08:00
2026-09-30 00:49:53 +08:00
2026-10-19 23:41:15 +08:00
2026-10-05 13:26:49 +08:00
2026-10-18 20:14:50 +08:00
2026-11-05 12:40:57 +08:00
2026-11-05 20:23:16 +08:00
2026-11-02 08:51:34 +08:00
2026-10-18 03:34:47 +08:00
2026-10-24 04:25:02 +08:00
2026-10-05 10:58:17 +08:00
2026-11-02 16:07:45 +08:00
2026-10-05 10:58:17 +08:00
2026-10-03 08:18:05 +08:00
2026-10-20 21:35:47 +08:00
2026-09-30 09:44:55 +08:00
2026-10-18 11:35:13 +08:00
2026-10-07 18:22:55 +08:00
2026-11-06 11:25:47 +08:00
2026-10-01 00:12:04 +08:00
2026-10-11 10:12:11 +08:00
2026-10-28 12:48:47 +08:00
2026-10-28 12:48:47 +08:00
2026-09-30 13:24:26 +08:00
2026-10-05 16:45:10 +08:00
2026-10-28 16:03:36 +08:00
2026-10-09 07:25:08 +08:00
2026-10-15 23:04:25 +08:00
2026-10-19 17:27:37 +08:00
2026-10-19 15:27:08 +08:00
2026-10-03 19:27:14 +08:00
2026-10-18 03:34:47 +08:00
2026-10-15 23:04:25 +08:00
2026-10-17 00:15:06 +08:00
2026-10-03 11:30:48 +08:00
2026-10-07 11:35:31 +08:00
2026-10-02 22:08:13 +08:00
2026-10-03 11:30:48 +08:00
2026-10-03 15:01:38 +08:00
2026-11-06 11:25:47 +08:00
2026-09-30 00:49:53 +08:00
2026-10-06 03:14:18 +08:00
2026-11-05 20:19:36 +08:00
2026-11-02 16:07:45 +08:00
2026-11-05 12:40:57 +08:00
2026-10-02 09:28:07 +08:00
2026-09-30 11:06:22 +08:00
2026-10-13 11:53:58 +08:00
2026-10-05 16:45:10 +08:00
2026-11-06 10:53:02 +08:00
2026-11-01 19:55:40 +08:00
2026-10-14 01:20:40 +08:00
2026-10-08 10:54:43 +08:00