抱歉,标题不具有描述性,但我不知道如何表达它。目前,我正在尝试使用 cakePHP 开发 Twitter 克隆,因为我是网络编程新手。我带了3张桌子:
用户(ID、姓名)
推文(id、内容、user_id)
- id是自动生成的id
- 内容是推文的文本
- user_id 是发帖用户的 ID
关注者(id、user_id、following_id)
- id是自动生成的id
- user_id 是执行以下操作的用户
- follow_id 是被关注的用户
现在,几乎一切都基本可以正常工作,甚至连跟随功能也有所改善。但是,我认为我可能设置了错误的模型关系。事实上,我很确定这是错误的。
现在,这些是模型关系:
-
User:有很多推文,有很多关注者
-
Tweets:属于用户
-
关注者:属于用户
我很确定追随者关系是错误的,但这就是我一直在处理的问题。现在,有效的是用户登录/注销、会话、发帖、删除您自己的帖子以及关注其他用途(然后能够看到他们的推文)。
现在不起作用的是当我尝试获取我正在关注的人或正在关注我的人的列表时。问题是我不确定如何访问该数据。
我想要一个屏幕,我可以在其中单击链接来查看我关注的所有人员,然后查看他们的所有最新推文。
例如,我相信我可以使用 find() 查询来获取我关注的所有人员的列表,但正如您从上面的关注者表中看到的,该查询仅返回关注者的用户 ID,并且追随者。从这些数据中,我如何获取他们的姓名和最新推文?
我要进行两次查找吗?我是否可以在我的模型关系中重新定义它,以便在我的 ctp 文件中,我可以仅通过 php 浏览并使用类似以下内容的内容:
$this->$data['Tweet']['userID']
$this->$data['User']['name']
$this->$data['Tweet']['content']
抱歉,我不确定我的解释是否正确......
不过,我确实希望我的意图是明确的。任何建议表示赞赏!
谢谢你!
app/models/user.php
class User extends AppModel{
var $name = 'User';
var $hasAndBelongsToMany = array(
'Follower' => array(
'className' => 'Follower',
'joinTable' => 'user_users',
'foreignKey' => 'user_id',
'associationForeignKey' => 'child_user_id'
)
)
}
app/models/follower.php
class Follower extends AppModel{
var $name = 'Follower';
var $useTable = 'users';
}
您必须创建一个包含 user_id 和 child_user_id 字段的表 user_users。 child_user_id 将是关注者 ID,如果您愿意,您可以将其命名为关注者 id,但如果您将来需要建立类似的关系,则可能会造成混乱。
试试看。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)