我正在为我的网站上的用户提供通知系统。我有一个“事件”表,用户在发生这些事件时会收到通知(朋友请求,新关注者,评论等)。有没有办法在事件表的//读取列中为特定事件(根据用户请求信息)插入一个值,例如说0表示未读,1表示读取?那么它不再是值得通知的了吗?
答案 0 :(得分:4)
是的。只需将您的列存储为TINYINT(1)
即可。正如预期的那样,MySQL文本TRUE
的计算结果为1,FALSE
的计算结果为0。
(假设您的事件表存储了分配给用户的各个事件,而不是可能发生的常规事件类型。)
SELECT * FROM events WHERE user_id = [user_id] AND read = 0 #list all for user
UPDATE events SET read = 1 WHERE event_id = [event_id] #mark as read
答案 1 :(得分:0)
创建类型为isRead
的{{1}},并将其设置为0和1,以表示特定事件(即读取的行)。
如果您将每个事件,评论,帖子等映射到每个用户,那么您需要一个单独的表tinyInt
包含外键keysTracker
,event_id
,comment_id
,然后a post_id
可以通过在查询语句中链接用户的读/未读状态来映射用户的读/未读状态。
user_id
这样,如果您有一组共同的事件,例如“选举2011”,您确保不是在另一个表中添加重复的事件条目,而只添加$query="SELECT * FROM event JOIN keysTracker ON event.event_id=keysTracker.event_id WHERE user_id='6' AND isRead='1' ";
的新user_id
整个过程称为规范化,建议您阅读more here