NeoEloquent 迁移完整教程:neo4j:migrate 系列命令从入门到精通

NeoEloquent 迁移完整教程:neo4j:migrate 系列命令从入门到精通 NeoEloquent 迁移完整教程neo4j:migrate 系列命令从入门到精通【免费下载链接】NeoEloquentThe Neo4j OGM for Laravel项目地址: https://gitcode.com/gh_mirrors/ne/NeoEloquentNeoEloquent 是 Laravel 生态中最受欢迎的 Neo4j OGM对象图映射器它让 PHP 开发者能用熟悉的 Eloquent 语法操作图数据库。而NeoEloquent 迁移Migration则是管理图结构演进的核心工具通过neo4j:migrate系列命令你无需手写 Cypher就能像管理 MySQL 表结构一样对 Neo4j 的标签Label、索引和约束进行版本化控制。本教程将带你从零开始完整掌握 Neo4j 图数据库迁移的全部命令与实战技巧。为什么 Neo4j 也需要迁移很多人认为 Neo4j 是 schema-less无模式数据库就不需要迁移了。这其实是个误区无模式 ≠ 无结构虽然属性不需要预定义类型但标签、索引、唯一约束依然需要管理索引与约束性能优化和业务规则如邮箱唯一必须依赖迁移来声明团队协作多人开发时迁移文件是图结构变更的唯一官方记录NeoEloquent 正是为此提供了与 Laravel 原生迁移完全一致的体验命令统一使用neo4j命名空间例如neo4j:migrate、neo4j:migrate:rollback等学习成本极低。迁移前的准备工作三步配置 ✅在运行任何neo4j:migrate命令之前请完成以下准备工作官方文档 中也有明确说明创建迁移目录手动创建文件夹app/database/labels这是 NeoEloquent 存放标签迁移文件的默认位置路径定义在 BaseCommand.php 的LABELS_DIRECTORY常量中更新 composer.json将app/database/labels加入classmap数组让迁移类能被自动加载执行自动加载运行composer dump-autoload让配置生效完成这三步迁移系统即可正常工作。NeoEloquent 会通过 MigrationModel.php 中定义的NeoEloquentMigration标签记录每次迁移的执行历史这与 Laravel 的migrations表功能完全对应。第一步用 neo4j:make:migration 创建迁移文件 ✍️创建迁移文件是整套流程的起点使用neo4j:make:migration命令php artisan neo4j:make:migration create_user_label命令执行后会在app/database/labels目录生成一个时间戳命名的 PHP 文件实现逻辑见 MigrateMakeCommand.php。为了让生成的文件直接可用推荐附加--create或--label选项指定标签名php artisan neo4j:make:migration create_user_label --createUser php artisan neo4j:make:migration add_email_to_user --labelUser生成的文件基于 create.stub 模板默认包含up()和down()两个方法并自动引入Neo4jSchemafacade 和Blueprint。注意use语句也可以手动补全参考 README.md 中 Schema 章节的说明。第二步编写图结构逻辑 打开生成的迁移文件在up()方法中定义标签的索引和约束public function up() { Neo4jSchema::label(User, function(Blueprint $label) { $label-unique(uuid); $label-index(email); }); }这里的Neo4jSchema是 Neo4jSchema.php 提供的门面Facade它会自动被注册。与 MySQL 迁移不同你无需声明属性类型只需声明索引和约束因为 Neo4j 的属性类型是动态推断的——这正是图数据库迁移的独特优势。第三步neo4j:migrate 运行迁移的 4 种姿势 一切就绪后运行全部待执行的迁移php artisan neo4j:migrate在实际项目中你还会用到以下高频变体场景命令指定迁移目录php artisan neo4j:migrate --pathapp/foo/labels迁移某个包php artisan neo4j:migrate --packagevendor/package生产环境强制执行php artisan neo4j:migrate --force预演不真正执行php artisan neo4j:migrate --pretend其中最推荐的是--pretend预演模式它会模拟执行并输出将要运行的 Cypher 语句适合在正式迁移前彩排一遍。若遇到类找不到的错误先运行composer dump-autoload再重试。所有选项定义见 MigrateCommand.php。回滚与重置neo4j:migrate:rollback 与 reset ↩️图结构改错了怎么办NeoEloquent 提供了完善的回滚机制回滚最近一次迁移php artisan neo4j:migrate:rollback回滚全部迁移php artisan neo4j:migrate:reset两者的区别在于rollback只撤销最后一次批量执行的迁移对应 Laravel 的 batch 机制而reset会循环调用回滚直到全部迁移执行完毕循环逻辑见 MigrateResetCommand.php。执行时同样支持--pretend预演和--database指定连接。刷新迁移neo4j:migrate:refresh 一条命令重来 开发阶段最常用的命令当属neo4j:migrate:refresh它等价于先 reset 再 migrate的组合操作php artisan neo4j:migrate:refresh如果想在刷新后顺便重新填充测试数据加上--seed选项php artisan neo4j:migrate:refresh --seed从 MigrateRefreshCommand.php 的源码可以看出它内部就是依次调用migrate:reset和migrate再按需执行数据填充——一个便捷的聚合命令让开发环境的数据重建变得一键完成。迁移命令全家桶速查表 命令作用常用选项neo4j:make:migration创建迁移文件--create、--label、--pathneo4j:migrate运行全部待执行迁移--path、--package、--force、--pretend、--seedneo4j:migrate:rollback回滚最近一次迁移--database、--pretend、--forceneo4j:migrate:reset回滚全部迁移--database、--pretend、--forceneo4j:migrate:refresh重置后重新迁移--seed、--seeder、--force新手常见问题与最佳实践 Q1运行迁移时报class not foundA几乎都是 composer 自动加载问题。确认app/database/labels已加入composer.json的classmap然后执行composer dump-autoload。Q2--create和--label有什么区别A两者都会把标签名填入生成的迁移模板效果等价。当未指定--label时--create的值会被作为标签名使用见 MigrateMakeCommand.php。Q3迁移历史存在哪里ANeoEloquent 会在图中创建一个NeoEloquentMigration标签节点记录migration名和batch号你可以在浏览器中打开 Neo4j 查看这些记录节点。最佳实践建议每次结构变更单独创建一个迁移文件保持历史清晰生产环境迁移前先用--pretend预演验证将迁移文件纳入版本控制团队共享同一套图结构在down()方法中对称地撤销up()的索引和约束总结从入门到精通的完整路径 至此你已经完整掌握了 NeoEloquent 的整套迁移工作流用neo4j:make:migration创建文件 → 用Neo4jSchema定义索引与约束 → 用neo4j:migrate部署 → 用rollback、reset、refresh灵活管理变更。这套命令的设计与 Laravel 原生迁移几乎一致却完全适配 Neo4j 的标签、索引与约束体系堪称图数据库项目开发与上线的定海神针。如果想深入源码建议从 src/Console/Migrations/ 目录开始阅读配合 src/Migrations/MigrationCreator.php 和 stubs 模板你就能完全理解迁移文件从生成到执行的完整链路。现在就动手为你的 Neo4j 项目建立第一份图结构迁移吧【免费下载链接】NeoEloquentThe Neo4j OGM for Laravel项目地址: https://gitcode.com/gh_mirrors/ne/NeoEloquent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考