cakephp メッセージ機能
今日時間が多少あったので、メッセージ機能にやっと手をつけれました。
といっても、全然できてないですが。ww
テーブル構成を変更しました。
こんな感じです。
usersは以前と同じです。
messagesを変更しました。
前は、送信と受信を分けてテーブルを作成していましたが、
なんか無理??
と判断しましたので、変更です。
似たような機能を実装しようとしている方がいましたので!
ということで、質問者さんと同じテーブル構成にしました。
id
sender
receiver
body
created
modified
です。
まずはアソシエーション!!!
Message.php Model
<?php
class Message extends AppModel {
public $belongsTo = array(
'Sender' => array('className' => 'User', 'foreignKey' => 'sender'),
'Resiver' => array('className' => 'User', 'foreignKey' => 'receiver'));
}
最低限度のみで。
ほんで、メッセージのテーブルに適当な情報を突っ込む!
突っ込んだ情報を取得したいが、ただfind('all')をしてきて取得しても意味がないので、
ログインしているユーザー情報を取得(id)して、送信者のカラムと取得したidが同じものだけを表示させる必要があります。
上記のテーブルでは、
ログインID = sender の情報を取得 →→ 送信フォルダ
ログインID = receiver の情報を取得 →→ 受信フォルダ
みたいな情報を取得する。
では、実装!!
MessageController.php コントローラー
public function index() {
$id = $this->set('user', $this->Auth->user());//ログイン情報を取得
$message=$this->Message->find(
'all',
array('conditions'=> array(
'Message.sender'=> array($this->Auth->user('id'))
))
);
$this->set('message',$message);
//$this->set('messages', $this->Message->find('all'));
}
$id = $this->set('user', $this->Auth->user());//ログイン情報を取得
これは、自分のメモのためにおいているだけです。
これであとは、いつも通りにviewを書く。
公式マニュアル通りで取得できます。
<?php foreach ($message as $message): ?>
<?php echo $message['Message']['sender']; ?>
<?php echo $message['Message']['receiver']; ?>
<?php echo $message['Message']['created']; ?>
<?php endforeach; ?>
これでオッケー!!!!