Laravel多态关联中ID字段应存储哪种类型?
- 内容介绍
- 文章标签
- 相关推荐
本文共计746个文字,预计阅读时间需要3分钟。
commentable_id 存储的是被关联模型的键值(通常是 id),而不是自增序号、UUID(除非你选择的主键就是 UUID)或评论自身的 ID。
为什么必须是目标模型的主键?
多态关联靠 commentable_id + commentable_type 一起定位唯一记录。Eloquent 在查询时会用这两个字段拼出类似 WHERE commentable_id = ? AND commentable_type = ? 的条件,再根据 commentable_type 自动实例化对应模型(比如 App\Models\Post),最后调用该模型的主键字段去匹配 —— 所以这个 ID 必须和目标模型声明的 $primaryKey 一致。
本文共计746个文字,预计阅读时间需要3分钟。
commentable_id 存储的是被关联模型的键值(通常是 id),而不是自增序号、UUID(除非你选择的主键就是 UUID)或评论自身的 ID。
为什么必须是目标模型的主键?
多态关联靠 commentable_id + commentable_type 一起定位唯一记录。Eloquent 在查询时会用这两个字段拼出类似 WHERE commentable_id = ? AND commentable_type = ? 的条件,再根据 commentable_type 自动实例化对应模型(比如 App\Models\Post),最后调用该模型的主键字段去匹配 —— 所以这个 ID 必须和目标模型声明的 $primaryKey 一致。

