1

ユーザー向けの簡単なメッセージング システムを実装しようとしています。

私はhabtmの専門家ではないので、助けていただければ幸いです!

これが私がこれまでに得たものです。何か提案をしてください!! (ケーキ1.3)

CREATE TABLE IF NOT EXISTS `app_messages` (
  `id` int(8) unsigned NOT NULL AUTO_INCREMENT,
  `from_user_id` int(8) unsigned DEFAULT NULL,
  `title` varchar(255) DEFAULT NULL,
  `body` text,
  `created` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
);
CREATE TABLE IF NOT EXISTS `app_messages_users` (
  `id` int(8) unsigned NOT NULL,
  `message_id` int(8) unsigned NOT NULL,
  `to_user_id` int(8) unsigned NOT NULL,
  `read` tinyint(1) DEFAULT '0',
  `replied` tinyint(1) NOT NULL DEFAULT '0',
  `trash` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
);

Message.php
var $hasAndBelongsToMany = array(
        'User' =>
            array(
                'className'              => 'User',
                'joinTable'              => 'messages_users',
                'foreignKey'             => 'message_id',
                'associationForeignKey'  => 'to_user_id',
                'unique'                 => true
            )
    );


User.php
var $hasMany = array(        
        'Message' => array(            
            'className' => 'message',            
            'foreignKey' => 'from_user_id',
            'dependent'     => true       
        )

だから今、私の質問は、私はこれを正しくやっていますか?

SEND MESSAGE 関数を作成して、両方のテーブルに正しい値を挿入するにはどうすればよいですか? 私は HABTM の関係に関して全く初心者ですが、学ぼうとしています。ウェブでそれについて読むのに数時間費やしましたが、それでも、私が正しい道を進んでいるかどうかを尋ねる必要があります.

御時間ありがとうございます!!-トム

4

1 に答える 1

0

結合テーブルに追加のフィールド ( readrepliedtrash) がある場合、HABTM 関係を使用しないでください。その場合、アプリケーションからそれらにアクセスできなくなります。したがって、代わりに、結合テーブルの新しいモデルを介して 2 つの hasMany アソシエーションを構成する必要があります。こちらのクックブックで詳しく説明されています。

したがって、次のようなものになります。

// User.php
class User extends AppModel {
    public $hasMany = array(
        'MessageUser' /* you can call this 'SentMessage' or something that makes more sense */
    );
}

// Message.php

class Message extends AppModel {
    public $hasMany = array(
        'MessageUser'
    );
}

// MessageUser.php

class MessageUser extends AppModel {
    public $belongsTo = array(
        'User', 'Message'
    );
}
于 2012-04-12T15:55:39.230 に答える