首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP:朋友系统的想法?

PHP:朋友系统的想法?
EN

Stack Overflow用户
提问于 2010-08-27 03:17:27
回答 4查看 649关注 0票数 0

我需要一个交友系统的帮助。

我在想如何让两个用户都能看到他们在一起是朋友。

我是否应该只创建一个user1字段和user2字段,然后在显示他/她的朋友时,它应该选择user1 ='$id‘或user2 = '$id’的位置?

或者,每次人们成为朋友时,我应该做两行吗?

聪明的方式和例子将不胜感激。谢谢。

我存储在mysql数据库中。

我的想法是,我应该如何列出谁是谁的朋友。假设我将方法1)与user1和user2列一起使用,那么我应该得到user1或user2是$id (用户id)的地方,但是这能正常工作吗?

我刚刚试过了,它在用户1的朋友列表中显示了user2的用户I,但在用户2的朋友列表中,它只显示了他自己的用户I,而不是user1s。

EN

回答 4

Stack Overflow用户

发布于 2010-08-27 03:21:18

在使用分片的大型项目中,您应该始终为每个用户复制数据。

对于不太大的项目,可以保留一个表,其中包含user_id的"initiator“和"accepter”字段。别忘了为友情添加索引和"status“字段

票数 0
EN

Stack Overflow用户

发布于 2010-08-27 03:22:10

我假设你把它们存储在数据库里。一种简单的方法是创建一个新表,我们称它为"friendships“,它有两列: user_1和user_2。如果两个用户是朋友,那么在这个表中应该有一行。这是一种非常简单的实现方式,但它应该是有效的。

票数 0
EN

Stack Overflow用户

发布于 2010-08-27 04:06:48

代码语言:javascript
运行
复制
SELECT users.name, fr.name
FROM users, friends, users AS fr
WHERE users.user_id = ?
AND users.user_id = friends.user_id1
AND friends.user_id2 = fr.user_id
UNION 
SELECT users.name, fr.name
FROM users, friends, users AS fr
WHERE users.user_id = ?
AND users.user_id = friends.user_id2
AND friends.user_id1 = fr.user_id

这将允许您针对多对多关系的中间表进行检查,而不必重复(反向)行。

代码语言:javascript
运行
复制
CREATE TABLE `users` (
  `user_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  PRIMARY KEY (`user_id`),
);

CREATE TABLE `friends` (
  `user_id1` bigint(20) unsigned NOT NULL,
  `user_id2` bigint(20) unsigned NOT NULL,
  PRIMARY KEY (`user_id1`,`user_id2`)
);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3578664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档