私は自分の問題の解決策に出くわしたと思いましたが、それでも私のアプローチは私のすべてのニーズに適合していません。したがって、私はあなたの提案に頼ります。基本的に私が達成したいことは次のとおりです。
私は3つのデータベーステーブルを持っています:
- ユーザー:id、ユーザー名、..。
- private_messages:id、..。
- private_messages_users:id、private_message_id、sender_id、recipient_id、status
このデータベーススキーマを表示すると、メッセージごとに結合テーブルに行を作成します。つまり、2人の受信者にメッセージを送信すると、結合テーブルに2つの行が挿入されます。あなたがより良い異なるアプローチを持っているなら、私は提案を受け入れます。
次のことを行うには、関連付けを定義する必要があります。
- メッセージを作成することができます。作成フォームに、メッセージを送信する受信者を選択できる複数のリストが必要です。保存する前に送信者を$this->data配列に手動で追加するため、ここでは送信者は重要ではありません。
- 受信トレイと送信済みフォルダを作成できます。ここで、受信したすべてのメッセージをそれぞれ取得し、送信します
- 送信されたメッセージを、送信先のすべての受信者と一緒に表示できる
- ユーザーがメッセージを初めて表示したときに、メッセージを既読としてマークできる
- また、sender_idとrecipient_idごとに、usersテーブルからユーザー名を取得したいと思います。
要求されたすべてのアクションを「cakily」で完了してください。つまり、「ハック」や配列を変換するメソッドはありません。作成された関連付けに完全に基づいた、単なる単純な操作。
私はこの問題に1週間以上苦労しているので、どんな助けでも大歓迎です。どうもありがとうございます!