类似Facebook的通知系统(Globe Icon)

时间:2014-11-28 18:24:12

标签: mysql join database-design notifications

我正在尝试创建类似Facebook中的通知系统。我在本文末尾解释了这个通知系统的确切目标。

以下代码应显示有关帖子/评分等的所有通知。当然除了我的帖子。此外,它还应显示所有通知,其中我是内容的创建者(n.creator_id)。但结果是空的:

SELECT 
(SELECT COUNT(*) FROM `notification_read` WHERE `is_read`='0' AND `uid`='".$_SESSION['uid']."') AS count,
n.`id`,n.`site`,n.`site_id`,n.`creator_uid`,n.`type`,
nu.`id` AS nuid,nu.`uid` AS nu_uid,nu.`date`,
u.`gender`

FROM `notification` AS n
LEFT JOIN `notification_user` AS nu ON nu.`nid` = n.`id` 
LEFT JOIN `users` AS u ON u.`id` = nu.`uid` 
WHERE 
    ( 
    nu.`uid` != '".$_SESSION['uid']."'
    AND
    n.`creator_uid` = '".$_SESSION['uid']."'
    )
GROUP BY n.`id` 
ORDER BY nu.`date` DESC
LIMIT 7

表结构是:

notification:id,site_id,creator_uid,site,type

notification_user:id,nid,uid,date

notification_read:id,nuid,uid,is_read

进一步说明:我需要LEFT JOIN users,因为我需要性别说" X喜欢他/她的评论"。 COUNT显示我想要在该地球图标上显示的通知量。

此外,我无法想到一个更好的桌面结构,因为我需要考虑我想要做的事情。但是,如果有更好的方法或更好的表格结构或我可以改进的任何其他内容,我可以提出建议。

我的目标是显示以下内容的通知:

  • 我创建的内容(img已上传,评论,评分等)
  • 我评论,评分等的其他人的内容
  • 如果我获得了学分
  • 如果有人使用我的推荐链接在网站上注册

几乎是基本的社交网络事物。提前感谢您对该结构的建议或/和我的问题的答案,为什么我的SELECT语句显示空结果。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的情况,我看到了post

所以也许你可以在那篇文章上得到一个想法。