mirror of
https://gitee.com/ulthon/ulthon_admin.git
synced 2026-11-08 03:50:50 +08:00
refactor(install): 种子退役,migrate:run 一条命令完成建表与初始数据
新增 InitDataAlignService 六域对齐(超管/角色/权限节点/配置/快捷入口/商城演示)与 20260909130000 迁移;SystemAdmin 快照以字面量哈希入库;删除种子三件与安装锁依赖,seeds 目录留 .gitkeep;README/tests/规则等 11 处说明同步。 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -153,13 +153,13 @@ CREATE DATABASE IF NOT EXISTS ulthon_admin_test
|
||||
CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
```
|
||||
|
||||
第二步,建表 + 种子(测试库已建后执行):
|
||||
第二步,建表 + 初始化数据(测试库已建后执行):
|
||||
|
||||
```bash
|
||||
php tests/setup_test_db.php
|
||||
```
|
||||
|
||||
这个脚本会在同进程内依次跑 `migrate:run`(系统表)、`scheme:sync`(业务表)、`seed:run`(参考数据),并自查 `information_schema`。成功退出码 0。脚本幂等,可安全重跑。
|
||||
这个脚本会在同进程内依次跑 `migrate:run`(系统表 + 全部初始数据)、`scheme:sync`(业务表),并自查 `information_schema`。成功退出码 0。脚本幂等,可安全重跑。
|
||||
|
||||
### 日常运行
|
||||
|
||||
@@ -347,7 +347,7 @@ class XxxServiceTest extends TestCase
|
||||
|
||||
1. **装依赖**:`composer install`(`phpunit/phpunit: ^10` 已在 require-dev)
|
||||
2. **建测试库**:用 root 连接执行 `CREATE DATABASE {env.database}_test CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;`(库名 = .env 的 `DATABASE` + `_test`)
|
||||
3. **建表 + 种子**:`php tests/setup_test_db.php`
|
||||
3. **建表 + 初始化数据**:`php tests/setup_test_db.php`
|
||||
|
||||
为什么建表必须跑两套机制(这是框架最重要的特点之一,缺一不可):
|
||||
|
||||
@@ -356,7 +356,7 @@ class XxxServiceTest extends TestCase
|
||||
| Phinx 迁移 | `migrate:run` | `database/migrations/` | 系统表(system_admin / system_menu / system_auth_node / system_config / system_host / system_timer_* 等) |
|
||||
| Scheme 同步 | `scheme:sync` | `app/admin/scheme/` | 业务表(各项目自己用 PHP 8 Attribute 声明的表) |
|
||||
|
||||
只跑 migrate 拿不到业务表,只跑 scheme 拿不到系统表(框架无法登录鉴权)。`setup_test_db.php` 在同进程内按顺序调这三条命令(migrate:run / scheme:sync / seed:run),并对每条带 `--force-force` 跳过交互确认(非 TTY 下 `scheme:sync` 会因 confirm 抛 Aborted)。
|
||||
只跑 migrate 拿不到业务表,只跑 scheme 拿不到系统表(框架无法登录鉴权)。`setup_test_db.php` 在同进程内按顺序调这两条命令(migrate:run / scheme:sync),并对每条带 `--force-force` 跳过交互确认(非 TTY 下 `scheme:sync` 会因 confirm 抛 Aborted)。
|
||||
|
||||
为什么用 config 级覆盖而不是环境变量:ThinkPHP 的 Env 加载 `.env`,且 `.env` 值优先于 OS 环境变量。`putenv('DATABASE=...')`、`$env:DATABASE=...`、bash 前缀变量都无法覆盖 `.env` 里已有的连接键。唯一可靠覆盖点是 config 级,在 `App::initialize()` 之后改写 `config/database.php` 解析出的连接数组。`tests/bootstrap.php` 和 `tests/setup_test_db.php` 都用这个模式。
|
||||
|
||||
@@ -397,7 +397,7 @@ php tests/setup_test_db.php
|
||||
| 文件 | 作用 |
|
||||
|------|------|
|
||||
| `tests/bootstrap.php` | PHPUnit 引导:autoload + 容器初始化 + config 级覆盖到测试库 |
|
||||
| `tests/setup_test_db.php` | 测试库建表脚本:migrate:run + scheme:sync + seed:run + 自验证 |
|
||||
| `tests/setup_test_db.php` | 测试库建表脚本:migrate:run + scheme:sync + 自验证 |
|
||||
| `tests/setup_test_db.ps1` / `.sh` | Windows / Linux 包装器 |
|
||||
| `tests/README.md` | 测试库建库与建表的完整说明 |
|
||||
| `phpunit.xml.dist` | PHPUnit 配置:testsuite 定义,bootstrap 指向 tests/bootstrap.php |
|
||||
|
||||
Reference in New Issue
Block a user