在 CakePHP 中添加好友功能

2023-12-14

我需要在我的应用程序中添加一个简单的朋友功能,通过一些研究,我需要一个链接回用户表的连接表?像这样的:(我已经有一个用户表)

用户-友谊-用户

谁能提供更多详细信息吗?


友谊表应包含以下列:

id Integer
user_from (the user who requested friendship)
user_to (the user who accepted friendship)
created (optional to track when your friendship started)

然后您需要创建正确的模型关系。

class User extends AppModel {
   ...
   var $hasMany = array(
      'UserFrom'=>array(
         'className'=>'Friendship',
         'foreignKey'=>'user_from'
      ),
      'UserTo'=>array(
         'className'=>'Friendship',
         'foreignKey'=>'user_to'
      )
   );
   var $hasAndBelongsToMany = array(
      'Friendship' => array(
          'className' => 'User',
          'joinTable' => 'friendships',
          'foreignKey' => 'user_from',
          'associationForeignKey' => 'user_to'
   );
   ...
}

class Friendship extends AppModel {
   ...
   var $belongsTo = array(
      'UserFrom'=>array(
         'className'=>'User',
         'foreignKey'=>'user_from'
      ),
      'UserTo'=>array(
         'className'=>'User',
         'foreignKey'=>'user_to'
      )
   )
   ...
}

这样您就可以在每个模型中定义 2 个关系。您也可以添加 HABTM 关系。运行烘焙脚本来构建控制器和视图。然后在你的代码中你可以使用这样的东西:

$this->User->UserFrom->find('all', 
    array(
        'conditions'=>array('user_from'=>1), 
        'contain'=>array('UserTo')
    )
);

这应该返回 ID 为 1 的用户的朋友以及所有朋友的详细信息。

小心递归查询。 :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 CakePHP 中添加好友功能 的相关文章

随机推荐

  • VSCode 仅导航回本地到当前文件?

    VSCode 中是否有一个选项可以限制 向后导航 这样它只会带您返回光标在当前文件中最后一个位置 这是当前的行为 在文件A上 打开方法foo 在文件A上 打开方法栏 关于文件B 打开方法baz 在文件A上 打开方法bor 如果我在 bor
  • 通过匹配键组合两个不相等的数组

    我想将下面的两个数组合并为一个 更具体地说 我想将第二个数组的内容添加到第一个数组中的匹配键 最终数组中的键应该具有两个数组的匹配键的内容 Array 123456789 404045862944400 gt 192 123456789 4
  • Chef apt_repository 开始失败并出现 SSL 验证错误

    从过去 2 天开始 我们开始看到与 apt repository 资源相关的 Chef 执行失败 厨师 客户执行也遇到了类似的失败 主厨独奏版本 12 19 36 操作系统 Ubuntu 14 中的 Ubuntu v18 请参阅 Chef
  • JavaScript 会成为一种“正确的”基于类的语言吗? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我指的是 MDN 关于 JavaScript 的 未来保留字 的文章 用于新的严格模式 https developer mozilla org en US docs Web JavaScr
  • 有人可以告诉我如何用循环替换以下 javascript 代码吗?

    dataBase 0 valueline d3 svg line x function d return x d Date y function d return y d dataBase 0 columnline dataBase 1 v
  • 如何使用 IAccessible 在 Firefox 中访问文档的 HTML

    我可以使用以下代码从 Firefox 窗口获取 IAccessible 对象 Guid guid new Guid 618736E0 3C3D 11CF 810C 00AA00389B71 object obj null int ret A
  • TDD:为什么让应用程序代码知道它正在测试而不是运行可能是错误的?

    In 这个线程 布莱恩 唯一的回答者 说 你的代码应该以与测试无关的方式编写 单个评论说 你的代码绝对不应该在全局 我正在测试标志 上分支 但都没有给出理由 我会really喜欢听一些关于此事的理性想法 进入给定的应用程序类并设置一个布尔值
  • CocoaPods 未安装或未处于有效状态

    Launching lib main dart on iPhone 11 Pro Max in debug mode Warning CocoaPods is installed but broken Skipping pod instal
  • 后台任务中的 Toast 通知响应

    我正在编写一个可以在后台任务中显示 toast 通知的应用程序 我使用BackgroundTaskBuilder 在通知中 我使用两个按钮 它们应该执行两个不同的功能 但我无法获得通知的响应 我在互联网上读到我应该为此启动另一个后台任务 但
  • 如何在服务中使用 kernel.terminate 事件

    我做了一个运行繁重任务的服务 该服务在控制器中调用 为了避免页面加载时间过长 我想返回 HTTP 响应并在之后运行繁重的任务 我读过我们可以使用 kernel terminate 事件来做到这一点 但我不明白如何使用它 目前我尝试在 Ker
  • @Autowired 不适用于球衣和弹簧

    当我当时运行测试时 Autowired 正在工作 但是当我运行 Web 应用程序并尝试当时获取数据时 它会抛出空指针异常 这是我的控制器 在此 BuyerRepo 中始终为 null import com retail exception
  • 在 Ruby on Rails 3 中使用 Twitter Bootstrap 图标作为链接的最佳方式?

    在 Rails 3 中使用 Twitter Bootstrap 提供的图标作为链接的最佳方式是什么 目前 我像粘贴的代码片段一样使用它 但当我使用平板电脑查看网页时 该图标不显示 我确信有更好的方法来使用 Twitter Bootstrap
  • 如何将 env 文件与 GitHub Actions 结合使用?

    我有多个环境 dev qa prod 并且我正在使用 env 文件来存储机密等 现在我要切换到 GitHub Actions 我想使用我的 env 文件并将它们声明到envgithub actions yml 的部分 但从我到目前为止所看到
  • 如何确定编解码器/容器组合是否与 FFmpeg 兼容?

    我正在考虑重新混合一些保存音频和视频的容器 以便提取最好的第一个音频流 并将其存储在一个新的容器中 例如only音频流存在 FFmpeg 的输出上下文是这样创建的 AVFormatContext output context NULL av
  • 如何将 var 添加到文本 javascript

    我有这个代码 ajax url http localhost record FlashWavRecorder master jjj r type HEAD error function sd html img src 5 0 gif suc
  • Keras 序列模型中使用哪种损失函数

    我使用的是 Keras 序列模型 预测输出的形状为 1 5 5 个特征 我有一个准确度指标定义如下 对于 N 个预测 模型的准确性将是预测样本的百分比 使得 对于每个预测及其各自的真实标签 所有特征的差异不超过 10 例如 如果y i 1
  • 从嵌套字典中删除字段的优雅方法

    我必须从字典中删除一些字段 这些字段的键在列表中 所以我写了这个函数 def delete keys from dict dict del lst keys Delete the keys present in lst keys from
  • SonarQube - 如何查看前 15 条以上的违规行为?

    我正在使用 SonarQube 5 3 我们的代码库中有 241k 个问题 但是 当我过滤掉 主要 问题并单击 规则 框查看违反了哪些规则时 我只能看到前 15 个 有没有办法可以找出所有这些问题 我已经编辑了这个问题以添加屏幕截图 请注意
  • 替换字符串中第 N 个位置的字符

    我想替换字符串中第 N 个位置的字符 这是我的查询 SELECT code FROM tablecodes 结果是 3 行 AXGETYTRTFYZUFYZFFFDIZEG GFYZUFYZFAXFCDIZAX ZUFYZGEFYFAXFF
  • 在 CakePHP 中添加好友功能

    我需要在我的应用程序中添加一个简单的朋友功能 通过一些研究 我需要一个链接回用户表的连接表 像这样的 我已经有一个用户表 用户 友谊 用户 谁能提供更多详细信息吗 友谊表应包含以下列 id Integer user from the use