-1

我需要的:

类似facebook的友谊系统。

  1. User (A)发送好友请求User (B)
  2. User (B)确认请求
  3. User (A)现在User (B)是朋友

我的问题:

我很困惑如何解决这个问题。我在互联网上阅读了很多,但它并没有真正帮助我......

我的问题:

  • CakePHP 中的链接是什么样的?是 hasAndBelongsToMany 吗?还是有很多?或者 ...?
  • 我如何正确地在数据库中实现它?
  • 如何在模型中链接它?

我已经做了什么:

桌子:users

名称:id, username, password, ...

users_users 表:id, user_id, friend_id,approved

模型:

'User' => array(
                'className' => 'User',
                'joinTable' => 'users_users',
                'foreignKey' => 'user_id',
                'associationForeignKey' => 'friend_id',
                'unique' => 'keepExisting',
                'conditions' => '',
                'fields' => '',
                'order' => '',
                'limit' => '',
                'offset' => '',
                'finderQuery' => '',
                'deleteQuery' => '',
                'insertQuery' => ''
                );
4

1 回答 1

0

“@tereško 谢谢!但我收到一个错误:错误:发生内部错误”

首先回答您对您得到的“内部错误”的评论:

尝试设置debug为 2,config.php你会意识到你会开始得到更容易理解的错误。

关于您的第一个问题: 1.您的关系基本上看起来像hasMAny,因为每个用户都有朋友。HABTM 也可以在这里工作,但要复杂得多。这个决定(使用什么关系)还取决于系统的其他部分——即,您希望在系统的其他部分中使用什么以及如何使用这些数据。2. 阅读这里 3.再阅读那里

通过 jon 模型进一步了解HABTM和hasMany (如果您需要在连接表中存储任何其他数据,同时使用与 HABTM 相同的想法)。

当HABTM变得复杂时该怎么办?

默认情况下,当保存 HasAndBelongsToMany 关系时,Cake 会在保存新行之前删除连接表上的所有行。例如,如果您有一个关联了 10 个孩子的俱乐部。然后,您使用 2 个孩子更新 Club。俱乐部将只有 2 个孩子,而不是 12 个。另请注意,如果您想向联接添加更多字段(创建时或元信息),这可以使用 HABTM 联接表,但重要的是要了解您有一个简单的选择。两个模型之间的 HasAndBelongsToMany 实际上是通过 hasMany 和 belongsTo 关联关联的三个模型的简写。

您当前的数据库结构很糟糕。我不明白为什么你需要一个名为的表table- 或者我弄错了。如果你打算使用 HABTM,你根本不需要创建连接模型 - cake 会自动为你创建和填充它。

有关 HATBM 的更多信息:

  1. 这里
  2. 那里
  3. 这里
  4. 那里
于 2013-04-16T08:02:28.963 回答