模型关联关系指南

58 阅读1分钟

一对一关联:用户 ↔ 档案

每个用户仅拥有一个档案,档案也唯一对应一个用户。hasOne + belongsTo 实现双向精确绑定。

一对一关联_用户与档案.svg

多对一关联(反向 belongsTo):订单 → 用户

每笔订单属于一个用户,belongsTo 让订单上下文中快速定位下单者。

多对一_反向关联_belongsTo_订单与用户.svg

一对多关联:用户 → 订单

用户可拥有多笔订单,hasMany 聚合用户历史订单,便于统计与展示。

一对多关联_用户与订单.svg

多对多关联:用户 ↔ 角色

用户与角色互为多对多关系,需中间表(如 role_user),belongsToMany 双向映射权限归属。

多对多关联_用户与角色.svg

多态一对一关联:内容 → 封面

不同内容类型(文章、视频等)皆可挂载一个封面,多态一对一(morphOne)实现封面复用。

多态一对一关联_内容与封面.svg

多态一对多关联:内容 → 评论

内容可拥有多个评论,评论也可指向多种内容类型。morphMany 让评论管理更统一。

多态一对多关联_内容与评论.svg

多态多对多关联:内容 ↔ 标签

标签可打在任意内容上,内容也可挂多个标签,morphToMany 抽象出标签体系。

多态多对多关联_内容与标签.svg

反向多态关联:评论 → 内容

评论需追溯其原始内容,在评论模型中用 morphTo;在内容模型中统一处理多类评论。

反向多态关联_评论指向内容.svg

远程一对多关联:国家 → 城市 → 用户

涉及跨模型(可能跨库)时,国家通过城市间接获取用户列表,hasManyThrough 展现跨境串联。

远程一对多关联_国家城市用户.svg