2

我是 CakePHP 的新手。我到处都在寻找这个,但我似乎无法做到正确,或找到任何方向。我仍然不明白整个 HABTM 是如何工作的,我期待从中学到更多。

我正在尝试做一个类似于 Twitter 的系统,包含用户和关注者,以及帖子(推文)和分享(转推)。我已经设置了用户和帖子模型,并为关注者(用户和用户之间)和共享(用户和帖子之间)加入了表格。我应该如何设置我的模型关联?我一直在尝试几种方法,但我不确定我是否做得对。

另一个问题是,什么是正确的查找查询来获取我关注的人的所有帖子,加上他们分享的帖子,而不获取所有不必要的数据,如用户信息等,只是一个数组中的帖子?是否可以在一个查询中查找,或者我应该做几个然后合并数组?另外,了解如何正确过滤和限制这个相当复杂的查询(在某些日期范围之间获得“帖子时间线”,将帖子限制在一定数量,或两者兼而有之)将非常有用。

我知道我的问题有点傻,但我发誓我已经做了很多研究,但我似乎无法做到正确。因此,任何帮助,尤其是查询部分,将不胜感激。

谢谢!

4

1 回答 1

1

所以这些将是一些奇怪的关系。我觉得你应该有以下表格:

  • 用户(别名为 Followers)有很多推文
  • 帖子属于用户
  • 用户关注者(HABTM 表)

要在三个表上进行这项工作,Posts需要一个线程表。本质上,如果一个人转发(分享)一个帖子,则会在新帖子parent_id列中使用原始帖子的 id 创建一条新记录。然后,当调用记录时,模型可以提取附加数据并将其包含在提要中。

的别名方面Users允许跟随者部分仅在一个表中完成。要查找某人的追随者,请使用表中的一个键 ( follower_id) 进行搜索,而要查找某人关注的人,只需使用另一个键 ( users_id) 进行搜索。

至于您问题的第二部分,在此设置中查找应该很容易,但您可能需要阅读Containable and threaded queries。您可以在表中包含时间戳列,以便稍后按日期功能(或后时间线)进行搜索。

于 2013-04-19T02:22:14.697 回答