【发布时间】:2011-10-07 03:17:16
【问题描述】:
抱歉,标题不详,但我不知道如何措辞。目前,我正在尝试使用 cakePHP 开发 Twitter 克隆,因为我是 Web 编程新手。我用了 3 张桌子:
用户(ID、姓名)
- id是自动生成的id
- 用户名
推文(id、内容、user_id)
- id是自动生成的id
- 内容是推文的文本
- user_id 是发帖的用户 ID
关注者(id、user_id、following_id)
- id是自动生成的id
- user_id 是执行以下操作的用户
- following_id 是被关注的用户
现在,几乎所有东西都基本正常工作了,甚至有点关注功能。但是,我想我可能错误地设置了模型关系。事实上,我很确定这是错的。
现在,这些是模型关系:
- 用户:有很多推文,有很多关注者
- 推文:属于用户
- 关注者:属于用户
我很确定追随者关系是错误的,但这就是我一直在处理的问题。现在,有效的是用户登录/注销、会话、发布、删除您自己的帖子以及关注其他用途(然后能够看到他们的推文)。
当我尝试获取我正在关注的人或正在关注我的人的列表时,现在不起作用的是。问题是我不确定如何访问这些数据。
我想要一个屏幕,我可以在其中单击链接以查看我正在关注的所有人,然后查看他们所有的最新推文。
例如,我相信我可以使用 find() 查询来获取我关注的所有人的列表,但正如您从上面的 Follower 表中看到的那样,该查询仅返回用户 ID追随者和被追随者。从这些数据中,我如何获得他们的姓名和最新推文?
我要进行两次查找吗?我可以在我的模型关系中重新定义它吗,以便在我的 ctp 文件中,我可以通过 php 浏览并使用类似的东西:
$this->$data['Tweet']['userID']
$this->$data['User']['name']
$this->$data['Tweet']['content']
对不起,我不确定我的解释是否正确......
不过,我确实希望我的意图很明确。任何建议表示赞赏!
谢谢!
【问题讨论】:
-
我认为您应该使用HABTM 与关注者的关系,另请参阅book.cakephp.org/view/1046/Multiple-relations-to-the-same-model 以讨论将模型与其自身关联。
-
我问了我的一个朋友对此的看法(因为他是一名网络开发人员),他说我不一定需要处理表关系。他说在 cake 中应该有某种方法可以通过一个查询访问这些数据,但我相信他的意思只是对两个数据集进行简单的 find 查询。除非我在这里缺少某些东西,否则我以某种方式认为您提出的方式更有意义...
-
是的,除非我完全误解了这个问题,如果您建立了 HABTM 关系,您可以通过一个查询获得所需的一切。
-
我不认为你误解了这个问题。但是,也许我需要澄清一些事情。如果我与追随者建立了HABTM关系,那我不会有4张桌子吗?用户(id,姓名),推文(id,内容,user_id),关注者(id),Users_Followers(user_id,following_id)?也许这就是我需要重新阅读与您建议的同一模型链接的关系的地方,因为这对我来说看起来不正确..:)
-
不,您不需要关注者表,因为用户表将与其自身相关联。