应用场景
开始,建一张文章表,一张评论表 。基本一对多关系,表结构如下
posts
id - integer
title - string
body - text
comments
id - integer
body - text
post_id - integer
但是,如果以后又多了页面, 图片,视频....., 哪怕是评论也可以有评论,总不能建对应的N张评论表吧?于是
comments
id - integer
body - text
post_id - integer
page_id - integer
image_id - integer
.....
这样,虽然达到了能够重用之前的评论表的目的,可冗余字段实在太多了。每次都要动表结构。
laravel 解决方案
comments
id - integer
body - text
commentable_id - integer
commentable_type - string
使用
commentable_id
和
commentable_type
两个字段替代。这样做的好处显而易见,哪怕后续需求变动,要增加新的内容类型,只要定义一个新的
commentable_type
值就可以了。
comments