问答 / 2 / 10 / 创建于 3年前
关联模型有两个外键,关联应该怎么处理
要么是多态,要么就是设计模式有问题
@raybon 我是有个互动问题表,还有个回答的表,回答表记录了用户的回复, 为了区分两个用户,我就在互动问题表 分别加了 userA 和userB字段,想着这样关联查询就能查到了, 但你说设计模式有问题,我也感觉好像不大对,但是没想到解决办法 :cry:
一对多(多态)#
表结构
一对多多态关联与简单的一对多关联类似;不过,目标模型可以在一个关联中从属于多个模型。假设应用中的用户可以同时「评论」文章和视频。使用多态关联,可以用单个 comments 表同时满足这些情况。
多对多(多态)
多对多多态关联比 morphOne 和 morphMany 关联略微复杂一些。例如,博客 Post 和 Video 模型能够共享关联到 Tag 模型的多态关系。使用多对多多态关联允许使用一个唯一标签在博客文章和视频间共享
@yangjisen 我这可能不适合,多态, 因为的 互动问题表需要两个用户共同回答,所以我在互动问题表上存了 userA和userB的id,想着关联回答表能知道是哪个用户的,我感觉我的设计有问题……
说实话,这种场景没必要扯啥设计模式,特殊场景下特殊解决办法即可,不建议遇到关联的表就想到 Orm 关联怎么操作
Orm
你这里采用 left join 或者 right join 连接即可
left join 或者 right join
两个外键就是中间表啊。 不用定义中间表模型。直接多对多
多对多。 $this->belongsToMany(关联的模型类名, 中间表表名,当前模型在中间模型中的外键名称, 关联模型在中间模型的外键名称); 另外在写建表的时候建立外键id对应的的表就可以了
hello 你好,你最后是怎么解决的呢?
https://github.com/topclaudy/compoships,多个字段关联
我要举报该,理由是:
要么是多态,要么就是设计模式有问题
@raybon 我是有个互动问题表,还有个回答的表,回答表记录了用户的回复, 为了区分两个用户,我就在互动问题表 分别加了 userA 和userB字段,想着这样关联查询就能查到了, 但你说设计模式有问题,我也感觉好像不大对,但是没想到解决办法 :cry:
一对多(多态)#
表结构
一对多多态关联与简单的一对多关联类似;不过,目标模型可以在一个关联中从属于多个模型。假设应用中的用户可以同时「评论」文章和视频。使用多态关联,可以用单个 comments 表同时满足这些情况。
多对多(多态)
表结构
多对多多态关联比 morphOne 和 morphMany 关联略微复杂一些。例如,博客 Post 和 Video 模型能够共享关联到 Tag 模型的多态关系。使用多对多多态关联允许使用一个唯一标签在博客文章和视频间共享
@yangjisen 我这可能不适合,多态, 因为的 互动问题表需要两个用户共同回答,所以我在互动问题表上存了 userA和userB的id,想着关联回答表能知道是哪个用户的,我感觉我的设计有问题……
说实话,这种场景没必要扯啥设计模式,特殊场景下特殊解决办法即可,不建议遇到关联的表就想到
Orm
关联怎么操作你这里采用
left join 或者 right join
连接即可两个外键就是中间表啊。 不用定义中间表模型。直接多对多
多对多。 $this->belongsToMany(关联的模型类名, 中间表表名,当前模型在中间模型中的外键名称, 关联模型在中间模型的外键名称); 另外在写建表的时候建立外键id对应的的表就可以了
hello 你好,你最后是怎么解决的呢?
https://github.com/topclaudy/compoships,多个字段关联