CakePHP 私人消息系统

Posted

技术标签:

【中文标题】CakePHP 私人消息系统【英文标题】:CakePHP Private messaging system 【发布时间】:2012-09-09 16:51:04 【问题描述】:

我只是想知道是否有人可以让我开始在 Cakephp 框架上编写私人消息系统。我的目标是类似于 Facebook 收件箱系统。当然不必那么复杂!

我目前有一个 AUTH 系统,用户可以登录和注销。

【问题讨论】:

为什么每个人都反对这个......这不像我在要求代码,我只是想指出正确的方向...... 【参考方案1】:

最简单的方法是创建一个至少包含五列的messages 数据库表:idsender_idrecipient_idsubjectbody。然后,您还可以添加所需的其他列,例如 created

然后您可以按如下方式设置您的控制器:

<?php
class MessagesController extends AppController 

    public function inbox() 
        $messages = $this->Message->find('all', array(
            'conditions' => array(
                'recipient_id' => $this->Auth->user('id')
            )
        ));
    

    public function outbox() 
        $messages = $this->Message->find('all', array(
            'conditions' => array(
                'sender_id' => $this->Auth->user('id')
            )
        ));
    

    public function compose() 
        if ($this->request->is('post')) 
            $this->request->data['Message']['sender_id'] = $this->Auth->user('id');
            if ($this->Message->save($this->request->data)) 
                $this->Session->setFlash('Message successfully sent.');
                $this->redirect(array('action' => 'outbox'));
            
        
    

显然,您需要充实此示例,并更改可能不适用于您的应用程序的任何内容。如果您也需要,您还需要添加检查用户是否与他们尝试发送消息的人是朋友。

【讨论】:

我正在考虑将所有功能放入我的用户控制器中,让用户控制器只使用消息传递表。哪种方式更有效? 最好的做法是为每个模型配备一个控制器。当您与messages 数据库表进行交互时,因此也与Message 模型交互,您通常会创建一个相应的MessagesController 类,其中包含创建、读取、更新和删除(CRUD)消息的方法。然后,如果需要,您可以使用 CakePHP 中的路由组件来更改路由。

以上是关于CakePHP 私人消息系统的主要内容,如果未能解决你的问题,请参考以下文章

创建一个像 facebook 和 gmail 这样的线程私人消息系统

使用 Mongoid 的 MongoDB 对话/私人消息模式

在 PHP 中使用 Node.js、Socket.io、Redis 的私人聊天消息

将结果从 RabbitMQ 队列推送到 CakePHP 前端

如何使用 Django 创建用户到用户的消息系统?

在 CakePHP 和 Postfix 中处理电子邮件退回