(楼主方便的,提供下你们的user表结构)
当你提这个问题的时候,我就大概猜到了,你的user表设计的时候,支持注册来源的微信登录的unionID,同时也支持手机号注册。
这个一开始就要设计考虑好,假设用户第一次注册是通过微信来的,那么进入系统时候,应该提示用户绑定手机号,如果是小程序中的微信登录,可以调用获取手机号完成绑定,如果是网页扫码和微信公众号登录,就不能这样直接获取。然后,对于手机号注册的用户,也可以提供绑定微信的功能。尽量在一开始注册的时候,就完成这个绑定关系。这一点,很多大厂都没做好,比如拼多多。
一个用户两者都注册账号,想要合并的话,就要牵扯很多数据的迁移,需要写sql脚本合并账号,在夜深人静的时候,执行合并数据。
为什么没考虑过拆表呢? user wechat_user wxapp_user mobile_user 无论你是什么渠道,你都要在user表中有一条记录,这样等于是你操作单一的user 就可以了,合并的话 需要询问用户保留哪个,这个不算麻烦,主要是工作量
提供一个思路,拆开,做两个表:用户表,微信用户表。 用户表一般是姓名、手机号等信息,微信用户表一般是头像、昵称、open_id(小程序和公众号的要区分)、unio_id、用户id(关联用户表用户id)。用户表为了显示方便,可以多两个冗余字段,昵称和头像。 这样做的好处是便于扩展,假如后续需要支付宝登陆、需要微博登陆,只需要新建相应的表就可以。 你提出的问题是两条数据如何关联,那还是用户用户表的id和其他用户信息登陆表进行关联。
github.com/mouyong/laravel-oauth/b...
users
字段 | 类型 |
---|---|
id | unsigned integer |
name | varchar |
oauths
字段 | 类型 |
---|---|
id | unsinged integer |
user_id | unsigned integer |
app_id | varchar |
nickname | vachar |
platform | integer |
... | ... |
推荐文章: