CakePHP Twitter-clone:无法让跟踪系统工作

时间:2011-10-06 07:50:49

标签: php cakephp twitter

对于非描述性标题感到抱歉,但我不确定如何表达它。目前,我正在尝试用cakePHP开发一个Twitter克隆,因为我是网络编程的新手。我已经走了3张桌子:

  

用户(身份证,姓名)

  • id是自动生成的ID
  • 用户名称
  

推文(id,content,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']

对不起,我不确定我是否正确解释了自己......

我希望我的意图很明确。任何建议表示赞赏!

谢谢!

1 个答案:

答案 0 :(得分:2)

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,但如果您将来需要建立类似的关系,则可能会造成混淆。

尝试一下。