質問: ### 前提・実現したいこと 今、マッチングサービスを作ろうとしております。 そのマッチングサービスで、マッチングが成功した場合に、申し込んだ人と、申し込まれた人の二人で、個人チャットができるような機能を実装したいです。 その実装に関する質問で、いま現時点で、その実装の構想段階で、止まってしまっております。 僕自身が考えるその構想は、 RoomモデルとCommentモデルを作成し、そのRoomモデルにに、二人だけのチャットルームを作成し、そこに、お互いに言いたいこと、伝えたいことを投稿するということです。(その投稿は、Commentモデルに保存します) ※Roomsとcommentsは、1対多の関係になります。 ですが、僕が今止まっているのは、 1どのようにして、二人だけのチャットのフィールドを作り出したらいいのか? 2また、投稿できる人も、二人だけに限定し、その二人だけの投稿を一覧表示したいのですが、この、二人だけが投稿できる環境づくりはどうしたらいいですか? 以上の二点になります、 ご指導のほど、よろしくお願い致します ここに質問の内容を詳しく書いてください。 (例)PHP(CakePHP)で●●なシステムを作っています。 ■■な機能を実装中に以下のエラーメッセージが発生しました。 ### 発生している問題・エラーメッセージ ``` エラーメッセージ ``` ### 該当のソースコード ``` ソースコード ``` ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答: テーブル構造についてのご相談である という認識で回答させていただきます。 ■User ・ユーザーID ・ユーザー名 ■Room ・RoomID ■UserRoom ・RoomID ・ユーザーID ■Comment ・RoomID ・ユーザーID(投稿者) ・投稿日時 ・投稿内容 以上4つのテーブルを用意すれば実現できるのではないでしょうか。 ※将来的に人数の拡張が無い場合は、RoomとUserRoomは以下の1つのテーブルとしてまとめても可 ■Room ・ユーザーID1(1人目のユーザー) ・ユーザーID2(2人目のユーザー) ※ただし、ユーザーID1が必ず男性で、ユーザーID2が必ず女性であるような場合でないと プログラム側の処理が少し面倒になると思われます。 ■解説 既にマッチング機能が実装されているのであれば、 Userに近しいテーブルは存在していると思いますので、 UserとRoomをUserRoomにより紐づけます。 (UserとUserRoom、RoomとUserRoomはどちらも1対多の構造となります。) 1人1ルームまでという制約でもプログラム側で対応できます。 これで1の要件は満たせています。 2に関しては、CommentにRoomIDとユーザーID(投稿者)を持たせているので、 あとは投稿日時をソート条件に加えてプログラム側から呼び出すだけになります。