소셜 네트워크의 발전과 함께 개인 메시지 기능은 현대 소셜 네트워크의 필수 기능이 되었습니다. ThinkPHP에서는 개인 메시지 기능을 구현하는 것이 어렵지 않습니다. 이 기사에서는 ThinkPHP 프레임워크를 사용하여 개인 메시지 기능을 구현하는 방법을 소개합니다.
1. 데이터베이스 설계
비공개 메시지 기능을 구현하려면 먼저 데이터베이스 설계가 필요합니다. 사용자 테이블과 메시지 테이블이라는 두 개의 테이블을 만들 수 있습니다.
사용자 테이블에는 사용자 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. Controller
이제 개인 메시지 기능 구현을 시작할 수 있습니다. 먼저 개인 메시지와 관련된 작업을 처리할 메시지 컨트롤러를 만듭니다. 다음 명령을 사용하여 메시지 컨트롤러를 생성할 수 있습니다.
php think make:controller Messages
메시지 컨트롤러에서는 index 및 send라는 두 가지 메서드를 만들 수 있습니다.
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. 뷰
마지막으로 message.index와 message.send라는 두 개의 뷰를 만들어야 합니다.
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()}}
이 보기에서는 루프 문을 사용하여 모든 비공개 메시지와 작성자, 내용, 시간 등 발신자와 수신자 정보를 표시합니다. 마지막으로 페이징 함수 $messages->links()를 사용하여 페이징 링크를 표시합니다.
messages.send view는 비공개 메시지 전송 양식을 표시하는 데 사용됩니다. 코드는 다음과 같습니다.
<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!