本文目录导读:

对于 Laravel 模型关系图,强烈推荐使用插件,尤其是当项目模型较多、关系复杂时。
手动绘制不仅耗时,而且难以保持与代码同步,以下是目前最主流、最推荐的几种方案,按推荐程度排序:
第一梯队:自生成代码文档图(首选)
这类插件直接从你的代码中读取 Model 和关系定义,自动生成图表,这是最准确、维护成本最低的方式。
Laravel Relationships(原名 GraphQL,后更名)
- 推荐理由:功能最全,专门为生成 ER 图而生,官方的“Laravel 快速入门”教程中也常以此为例。
- 支持:自动识别
belongsTo、hasMany、belongsToMany等所有关系,并且会显示多态关系(Polymorphic),支持导出为图片(PNG/SVG)或交互式 HTML。 - 使用方式:
composer require beyondcode/laravel-relationships php artisan relationships:generate --format=html
在浏览器中打开生成的
relationships.html文件,就可以看到可拖拽、可点击的交互式关系图。
Laravel ER Diagram Generator (khsq/laravel-er-diagram)
- 推荐理由:轻量、简洁,专注于输出 ER 图,如果你只想看数据库层面的关系(主要是外键和主键),不关心 PHP 层面的多态关系,这个很合适。
- 特色:可以在 Artisan 命令行直接生成
dot格式文件,再用 Graphviz 渲染,或者直接输出图片。 - 使用方式:
composer require --dev khsq/laravel-er-diagram php artisan er-diagram:generate
第二梯队:基于 IDE 的静态分析(适合深度开发)
如果你日常使用 JetBrains IDE,这个方案是零成本且实时的。
IntelliJ IDEA / PhpStorm + Laravel Idea 插件
- 推荐理由:实时、深度集成,它不仅是画图工具,更是代码导航工具。
- 功能:
- 在
Model.php文件内部,右键选择Diagrams->Show Diagram或Show Diagram Popup。 - 它会自动解析你模型文件中的
use语句和关系方法。 - 优点:你可以自由添加/删除要显示的模型,双击模型可以跳转到对应的 PHP 文件,这一点对开发帮助极大。
- 前提:需要安装 Laravel Idea 付费插件(通常情况下,单独使用 PhpStorm 的 Database 工具生成的图不含 Laravel 的
hasMany等关系,只有外键约束)。
- 在
第三梯队:数据库 ER 工具(最传统,但全量)
如果你既想看图,又想管理数据库本身(如索引、字段类型),这些工具更合适,但需要手动或半自动映射。
MySQL Workbench / dbdiagram.io / 其他通用 ER 工具
- 适用场景:项目初期设计数据库,或需要给非技术人员展示数据库表结构。
- 方法:
- MySQL Workbench:连接你的数据库 ->
Database->Reverse Engineer,会生成包含外键关系的 ER 图。 - dbdiagram.io(在线工具):需要手动编写 DSL(领域特定语言)或导入 SQL。
- 这种方式不能反映 Laravel 的 Multi-word 关系(如
hasManyThrough、多态关联),只反映数据库的外键约束,对于纯 MVC 模式的项目,够用;但对于复杂的模型关系,不足。
- MySQL Workbench:连接你的数据库 ->
总结与建议
| 插件/工具 | 适合场景 | 安装复杂度 | 关系准确性 | 推荐指数 |
|---|---|---|---|---|
| Laravel Relationships | 生成项目文档、展示给团队 | ⭐⭐⭐ | ⭐⭐⭐⭐(包含多态) | ⭐⭐⭐⭐⭐ |
| PhpStorm + Laravel Idea | 日常开发、代码导航 | ⭐⭐ (需要插件) | ⭐⭐⭐⭐⭐(实时+可交互) | ⭐⭐⭐⭐⭐ |
| MySQL Workbench | 数据库纯结构审查 | ⭐ (已安装) | ⭐⭐ (无业务关系) | ⭐⭐⭐ |
核心结论:
- 如果你需要“一张完整的图”来给客户或文档用:使用 Laravel Relationships。
- 如果你是开发者,在编码时需要快速理清关系:直接在 IDE 里生成(PhpStorm + Laravel Idea)。
- 不要手动去画 visio 或 draw.io 图,那样维护成本和实际代码脱节的概率太高。