突出显示用户喜欢Twitter上的帖子,如Feed

问题描述 投票:0回答:1

我正在构建一个具有与Twitter非常相似的UI的应用程序,包括喜欢/喜欢帖子的能力,使用客户端和API端点的反应。

帖子来自各种来源,包括外部来源,所以为了这个问题的目的,我们可以说Youtube视频和文章。

由于帖子来自各种来源,不一定存储在本地数据库中,因此这些“喜欢”存储在两个表中。

表1是“Like Resource”表,其存储帖子类型,例如'视频'及其标识符,例如'2DFlghK1iuZz',如下所示:

TABLE `likes_resources` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `type` varchar(255),
  `identifier` varchar(255) 
)

表2是实际的like表,它针对资源和用户存储,大致如下:

TABLE `likes` (
  `like_resource_id` int(11),
  `user_id` int(11)
)

此设置适用于喜欢和不喜欢的帖子以及通过帖子或用户列出喜欢。

我正在努力的是最有效的方式突出显示用户在查看主要供稿时喜欢哪些帖子,这些帖子可以像Twitters Feed一样无限滚动,而不会撤回用户喜欢的所有帖子的潜在巨大列表。将其与Feed中当前可见的帖子进行比较。

我最初的想法是将当前可见的订阅源项列表发布到API端点,然后返回该列表中所有喜欢的列表,以便可以突出显示它们。

这似乎是实现此功能的合理方式,还是有更好的方法?

php database rest api architecture
1个回答
1
投票

左连接是你的朋友。

Select likes_resource.*, likes.user_id FROM likes_resource LEFT JOIN likes ON likes_resource.identifier = like_resource_id and user_id = @current_user_id

在连接找到匹配的任何位置,它将引入并填充user_id字段。如果user_id为null,则用户不喜欢它,您不应突出显示它。

© www.soinside.com 2019 - 2024. All rights reserved.