Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为每个用户获取新项目_Php_Algorithm_Forum - Fatal编程技术网

Php 为每个用户获取新项目

Php 为每个用户获取新项目,php,algorithm,forum,Php,Algorithm,Forum,我有许多对象(实体)。例如“新闻”、“博客”、“评论”; 我需要向注册用户显示多少“新闻”或“博客”对他来说是新的 现在,我创造了一种多对多的关系;例如“用户新闻阅读器”,它包含以下字段:id、userId、newsId; 如果“新闻”的关系存在,则该“新闻”已被读取,即“新闻”计数是当前用户的新“新闻”计数 所以,在这个方法中,我有很多表来表示多对多关系。 如何使其更加美观和正确?这可以用SQL完成 表: user_logons (username,logontime datetime) ne

我有许多对象(实体)。例如“新闻”、“博客”、“评论”; 我需要向注册用户显示多少“新闻”或“博客”对他来说是新的

现在,我创造了一种多对多的关系;例如“用户新闻阅读器”,它包含以下字段:id、userId、newsId; 如果“新闻”的关系存在,则该“新闻”已被读取,即“新闻”计数是当前用户的新“新闻”计数

所以,在这个方法中,我有很多表来表示多对多关系。
如何使其更加美观和正确?

这可以用SQL完成

表:

user_logons (username,logontime datetime)
news (newsitem,newstime datetime)
user_news (newsitem,username)
SQL


应该有用。这将仅显示自上次登录以来用户未查看过的新消息。你也可以将其应用于博客。这也将计算新文章的数量。遗憾的是,没有时间去测试。尝试sqlfiddle.com

存储用户上次查看内容的时间,然后只选择在该时间之后添加的内容。节省了很多映射表,这似乎在论坛引擎中使用。。谢谢但可能有更多的解决方案?
SELECT count(*),newsitem FROM news LEFT JOIN user_news ON user_news.newsitem=news.newsitem WHERE newstime > 
(SELECT logontime FROM user_logons ORDER BY logontime DESC LIMIT 1) 
AND user_news.username IS NULL