好的,所以我使用的是PHP MySQL
我想为社交网站实现通知系统
目前我有两个表一个用于包含列的帖子
-
- 帖子的id
-
- 车身//
-
- status//用于通知
-
- user_id//用户的id
每当preson评论或喜欢某个特定的帖子时,就会在Notification表中插入1条新记录
通知表包含以下列
- id//通知的id
- src_id//用户评论的帖子的id
- 键入//赞、评论等
- user_id//用户的id
所以问题是,我想从需要通知用户的通知表中获取数据。
例如Mysql查询是
SELECT * FROM notifications WHERE src_id IN ("244","245","249") order by src_id
例如,我在通知表中有一些这样的数据
id type user_id src_id
1 like 6 244
2 comment 4 244
3 like 1 249
4 comment 8 249
5 comment 9 245
6 comment 3 244
7 like 12 244
如何在php中通过src_id 对其进行分组来显示
这样我就可以生成这样的
4,3对您的帖子发表了评论244
12,6喜欢你的帖子244
我喜欢你的帖子249
8评论了你的帖子249
其中4,3,12,6,1,8
是user_ids
请参阅mysql GROUP_CONCT示例
编辑:
SELECT
group_concat(`user_id`) as 'users'
, `type`
, `src_id` as 'post'
FROM `notifications`
WHERE `src_id` IN ("244","245","249")
group by `src_id`, `type`
ORDER BY `src_id`
您可以通过在通知表中添加Sender
和Receiver
列来实现这一点。Sender
列将包含执行活动的用户的id,Receiver
列将包含在线用户的id。
例如,用户B对用户A的帖子发表了评论。在这里,用户B将是发送者,用户A将是接收者。
当收到在线用户的通知时,执行SQL查询:
SELECT * FROM notifications WHERE Receiver='$online_user';
通知表的示例结构:
CREATE TABLE notifications(
NID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
Sender INT NOT NULL,
Receiver INT NOT NULL,
Type VARCHAR(255) NOT NULL,
Since INT NOT NULL,
FOREIGN KEY(Sender) REFERENCES users(user_id),
FOREIGN KEY(Receiver) REFERENCES users(user_id)
);