ソーシャル ネットワークの発展に伴い、プライベート メッセージ機能は現代のソーシャル ネットワークの不可欠な機能になりました。 ThinkPHP では、プライベート メッセージ機能を実装することは難しくありませんが、この記事では、ThinkPHP フレームワークを使用してプライベート メッセージ機能を実装する方法を紹介します。
1. データベース設計
プライベートメッセージ機能を実現するには、まずデータベースを設計する必要があります。ユーザー テーブルとメッセージ テーブルの 2 つのテーブルを作成できます。
ユーザー テーブルには、ユーザーの ID、ユーザー名、パスワード、その他の情報が含まれます。
CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
メッセージ テーブルには、プライベート メッセージの ID、送信者と受信者の ID、メッセージの内容が含まれます。プライベート メッセージと送信時刻 情報待ち:
CREATE TABLE `messages` ( `id` int(11) NOT NULL AUTO_INCREMENT, `sender_id` int(11) DEFAULT NULL, `receiver_id` int(11) DEFAULT NULL, `content` text, `created_at` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2. コントローラー
ここで、プライベート メッセージ機能の実装を開始できます。まず、プライベート メッセージに関連する操作を処理するメッセージ コントローラーを作成します。次のコマンドを使用してメッセージ コントローラーを生成できます。
php think make:controller Messages
メッセージ コントローラーでは、index と send の 2 つのメソッドを作成できます。
index メソッドは、ユーザーのプライベート メッセージ リストを表示するために使用されます。コードは次のとおりです:
public function index() { $user = session('user'); $messages = Message::where('sender_id','=',$user->id) ->orWhere('receiver_id','=',$user->id) ->orderBy('created_at', 'desc') ->paginate(10); return view('messages.index', ['messages' => $messages]); }
このメソッドでは、まず、現在のログイン ユーザー情報を取得します。次に、送信者または受信者が現在のユーザーであるメッセージ テーブル内のすべてのプライベート メッセージをクエリし、新しい順にページングして表示します。
send メソッドはプライベート メッセージの送信に使用されます。コードは次のとおりです:
public function send(Request $request) { $content = $request->input('content'); $receiverId = $request->input('receiver_id'); $message = new Message(); $message->sender_id = session('user')->id; $message->receiver_id = $receiverId; $message->content = $content; $message->created_at = Carbon::now(); $result = $message->save(); return redirect('/messages'); }
このメソッドでは、最初に次の情報を取得します。ユーザーが入力したプライベート メッセージの内容と受信者の ID。次に、新しいメッセージ インスタンスを作成し、送信者の ID、受信者の ID、内容、送信時刻を設定し、プライベート メッセージをデータベースに保存します。
3. ビュー
最後に、messages.index とmessages.send という 2 つのビューを作成する必要があります。
messages.index ビューは、現在のユーザーのすべてのプライベート メッセージを表示するために使用されます。コードは次のとおりです:
@foreach($messages as $message) <div class="message"> <p>发送者:{{$message->sender->username}}</p> <p>接收者:{{$message->receiver->username}}</p> <p>{{$message->content}}</p> <p>时间:{{$message->created_at}}</p> </div> @endforeach {{$messages->links()}}
このビューでは、loop ステートメントを使用してすべてのプライベート メッセージをループし、送信者、受信者、内容、時刻などの情報を表示します。最後に、ページング関数 $messages->links() を使用してページング リンクを表示します。
messages.send ビューは、プライベート メッセージを送信するためのフォームを表示するために使用されます。コードは次のとおりです:
<form action="{{url('/messages/send')}}" method="post"> @csrf <div class="form-group"> <label for="receiver_id">收件人:</label> <select name="receiver_id" id="receiver_id" class="form-control"> @foreach($users as $user) <option value="{{$user->id}}">{{$user->username}}</option> @endforeach </select> </div> <div class="form-group"> <label for="content">私信内容:</label> <textarea name="content" id="content" rows="5" class="form-control"></textarea> </div> <div class="form-group"> <button type="submit" class="btn btn-primary">发送</button> </div> </form>
このビューでは、ドロップダウン ボックスを使用して受信者を選択し、テキスト ボックスを作成してプライベート メッセージの内容を入力します。
4. まとめ
上記の手順により、ThinkPHP フレームワークにプライベート メッセージ機能を実装できます。操作中は、ユーザーがログインしているかどうか、ユーザーにアクセス権があるかどうかなど、データのセキュリティの問題に注意を払う必要があります。優れた設計と安全な実装により、プライベート メッセージング機能はソーシャル ネットワークのユーザー エクスペリエンスをより向上させることができます。
以上がthinkphp がプライベート メッセージ機能を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。