>  기사  >  PHP 프레임워크  >  thinkphp가 개인 메시지 기능을 구현하는 방법

thinkphp가 개인 메시지 기능을 구현하는 방법

PHPz
PHPz원래의
2023-04-17 10:28:26774검색

소셜 네트워크의 발전과 함께 개인 메시지 기능은 현대 소셜 네트워크의 필수 기능이 되었습니다. 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라는 두 가지 메서드를 만들 수 있습니다.

  1. index 메소드

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]);
}

이 메소드에서는 먼저 현재 로그인된 사용자의 정보를 얻습니다. 그런 다음 보낸 사람 또는 받는 사람이 현재 사용자인 메시지 테이블의 모든 개인 메시지를 쿼리하고 이를 역시간순 및 페이징으로 표시합니다.

  1. send 방법

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라는 두 개의 뷰를 만들어야 합니다.

  1. messages.index view

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()를 사용하여 페이징 링크를 표시합니다.

  1. messages.send view

messages.send view는 비공개 메시지 전송 양식을 표시하는 데 사용됩니다. 코드는 다음과 같습니다.

<form action="{{url(&#39;/messages/send&#39;)}}" 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.