我正在学习PHP的推文克隆,我有一个主要问题.我找不到实现跟随系统的方法.有一个用户表,我想添加一个字段,其中包含每个用户遵循的所有用户的ID.
我应该用逗号分隔ID,然后在PHP中拆分它们吗?然后我需要从推文表中选择所有推文,这些推文都是由任何用户关注者发布的.是否有可以使用的SQL命令?类似的东西
SELECT *
FROM tweets
WHERE author='$followeduser'"
Run Code Online (Sandbox Code Playgroud)
但是哪里$followeduser
有多个ids.
有一张USER_MASTER
这样的桌子
USER_ID (int)
USER_NAME(varchar(50))
Run Code Online (Sandbox Code Playgroud)
创建一个名为表USER_FOLLOWERS
像这样
USER_FOLLOWER_ID // Auto increment-Primary Key for this record
USER_ID (int) // foriegn key to UserId column in USER_MASTER table
FOLLOWER_ID (int) // foriegn key to UserId column in USER_MASTER table
Run Code Online (Sandbox Code Playgroud)
将UserId存储在第一列中,并在列中存储跟随此用户的User的UserId Follower_ID
.
所以你的数据看起来像这样
USER_ID USER_NAME
--------------------------------------
1 SCOTT
2 JARED
3 MARC
4 ERIC
USER_FOLLOWER_ID USER_ID FOLLOWER_ID
--------------------------------------
1 1 2
2 1 3
3 1 4
4 2 1
Run Code Online (Sandbox Code Playgroud)
所以这意味着,用户斯科特有3个粉丝,Jared,Marc和Eric.用户JARED有一个追随者,即SCOTT
要获取用户的关注者列表(例如:Scott(ID = 1)),您可以在这两个表之间进行连接
SELECT U. USER_ID, U.USER_NAME From USER_MASTER U
INNER JOIN USER_FOLLOWERS UF ON U.USER_ID=UF.FOLLOWER_ID
WHERE UF.USER_ID=1 // 1 is the ID of SCott
Run Code Online (Sandbox Code Playgroud)