ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Hi.Events 的 demo:seed 命令:一条指令给空库种出四个能直接卖票的演示活动

Hi.Events 的 demo:seed 命令:一条指令给空库种出四个能直接卖票的演示活动

Hi.Events 的 demo:seed 命令:一条指令给空库种出四个能直接卖票的演示活动

【免费下载链接】Hi.EventsOpen-source event management and ticket selling platform — perfect for concerts, conferences, and everything in between 🎟️ If you find this project helpful, please consider giving us a star ⭐️项目地址: https://gitcode.com/GitHub_Trending/hi/Hi.Events

Hi.Events 的demo:seed命令解决"装完一片空白、不知道平台长什么样"的问题:一条命令向数据库写入四场配置完整的演示活动。读完这篇,你能独立搭起环境、种出演示数据,并把常见报错一次排查到位。

30 秒跑起来

进仓库的 docker/all-in-one/ 目录,把 docker/all-in-one/.env.example 复制为.env,用openssl rand -base64 32生成APP_KEY和JWT_SECRET填进去,然后跑docker compose up -d。三个容器(Postgres、Redis、应用本体)起来后,打开 http://localhost:8123 就是登录页。

接着在容器里种数据:

docker compose exec all-in-one php artisan demo:seed --confirm

成功时结尾会打印一张表格,列出每场活动的名称、事件 ID、occurrence 场次数和促销码,并附上每个活动页的公开链接,例如:

  • SUBTERRA 004 — Nite Kernel, Ánima, Basil Wren,促销码boxcarrier、earlydoors
  • Stillroom — Morning Practice & Weekend Specials,促销码firstmat、bringafriend
  • RUNTIME 26两天制技术大会、TIDELINE三日期末音乐节

看到这四项齐了,说明活动、产品、促销码、问卷全链路都写成功了。打开任意一条链接,应该能看到带封面图和主题色的完整公开页面,如下面这张夜店场演示活动的封面:

它到底在查什么

demo:seed走的是和界面完全相同的一组 handler——创建位置、活动、产品、问卷、促销码、主题设置,只是替你点完了所有按钮。四个事件各自覆盖不同的平台能力:

  • nightclub(夜店):四档按发售期升价的 General Admission、学生票、免费 guestlist(需促销码解锁)、五个 add-on、结账问卷、暗色主题
  • conference(会议):单人票、5 人起团队票、社区票、线上票、内部使用的 Speaker & crew 票
  • yoga(瑜伽):18 周周期课,每周 5 天每天 2 场 occurrence,周末专场独立覆盖价格,排除公共假期和闭馆周
  • festival(音乐节):多日票、Under 12s、Crew & artist guest 票

此外还会自动创建一个 demo 账号(默认邮箱demo+<时间戳>@example.com,密码DemoPass123!),把账号直接标为已验证,并为每场活动上传封面图。

报错了,对应查什么

现象根因修复
demo:seed writes demo events...没带确认参数,这是防误操作的门禁追加--confirm重跑
Failed while seeding ...中途失败数据库或配置异常,事务已回滚确认.env里APP_KEY、JWT_SECRET已生成,容器内php artisan migrate --force通过
命令成功但公开页看不到活动绑定的已有账号未通过验证给该账号补验证,或让命令自己创建 demo 账号
Organizer X does not exist--organizer-id指向的 organizer 不存在查organizers表拿正确 ID
Demo cover image is missing镜像里缺少backend/resources/demo/covers/资源重建 all-in-one 镜像

退出码 0 表示全部写入成功,1 表示失败且该批次已回滚;脚本里可以直接用php artisan demo:seed --confirm || exit 1做前置拦截。

把它焊进工作流

本地一键起环境,起完顺手种数据:

cd docker/all-in-one && cp .env.example .env echo "APP_KEY=base64:$(openssl rand -base64 32)" >> .env docker compose up -d docker compose exec all-in-one php artisan demo:seed --confirm

演示或验收环境里,种到指定组织者名下、只跑两类活动、指定货币:

docker compose exec all-in-one php artisan demo:seed \ --confirm --organizer-id=12 --only=nightclub,yoga --currency=USD

容易忽略的几个细节

如果你不指定--email,命令会生成demo+<时间戳>@example.com的新账号并自动打上已验证标记;想把演示数据归到自己名下,直接传--organizer-id加--email组合即可。

如果你用--only挑活动,取值必须精确匹配四个 key:nightclub、conference、yoga、festival,写错任何一个都会列出让重选,不会部分执行。

如果你传了--organizer-id,命令不会新建账号,而是取该 organizer 账号下的第一个用户;--timezone默认Europe/Dublin、--currency默认EUR,不传就按默认落库。

一页速查

项值
起环境docker compose up -d(docker/all-in-one/ 目录)
种全部php artisan demo:seed --confirm
指定组织者--organizer-id=<id>
只种部分--only=nightclub,conference,yoga,festival
账号凭据--email=/--password=(默认DemoPass123!)
时区 / 货币--timezone=/--currency=(默认Europe/Dublin/EUR)
退出码0 成功,1 失败且回滚

演示数据会写入账号、产品、订单相关的整张数据面,所以只种干净的本地库,别种到生产。

【免费下载链接】Hi.EventsOpen-source event management and ticket selling platform — perfect for concerts, conferences, and everything in between 🎟️ If you find this project helpful, please consider giving us a star ⭐️项目地址: https://gitcode.com/GitHub_Trending/hi/Hi.Events

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进