【问题标题】:Facebook-Like Notification System (Globe Icon)类似 Facebook 的通知系统(地球图标)
【发布时间】:2015-01-27 10:31:15
【问题描述】:

我正在尝试创建一个类似于 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、站点、类型

notification_user: id、nid、uid、日期

notification_read: id, nuid, uid, is_read

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

此外,考虑到我想做的事情,我想不出更好的表结构来满足我的需求。但如果有更好的方法或更好的表结构或其他任何我可以改进的东西,我愿意接受建议。

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

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

差不多就是基本的社交网络东西。预先感谢您提供有关该结构的建议或/和回答我的问题为什么我的 SELECT 语句显示空结果。

【问题讨论】:

    标签: mysql join database-design notifications


    【解决方案1】:

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

    所以也许您可以对该帖子有所了解。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-22
      相关资源
      最近更新 更多