Heim >PHP-Framework >Denken Sie an PHP >Wie thinkphp die Funktion für private Nachrichten implementiert

Wie thinkphp die Funktion für private Nachrichten implementiert

PHPz
PHPzOriginal
2023-04-17 10:28:26785Durchsuche

Mit der Entwicklung sozialer Netzwerke ist die Funktion privater Nachrichten zu einem wesentlichen Merkmal moderner sozialer Netzwerke geworden. In ThinkPHP ist es nicht schwierig, die Funktion für private Nachrichten zu implementieren. In diesem Artikel wird erläutert, wie Sie das ThinkPHP-Framework zum Implementieren der Funktion für private Nachrichten verwenden.

1. Datenbankdesign

Um die Funktion für private Nachrichten zu implementieren, müssen Sie zunächst die Datenbank entwerfen. Wir können zwei Tabellen erstellen, die Benutzertabelle und die Nachrichtentabelle.

Die Benutzertabelle enthält die Benutzer-ID, den Benutzernamen, das Passwort und andere Informationen:

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;

Die Nachrichtentabelle enthält die ID der privaten Nachricht, die ID des Absenders und Empfängers, den Inhalt der privaten Nachricht, die Sendezeit und Weitere Informationen:

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

Jetzt können wir mit der Implementierung der Privatnachrichtenfunktion beginnen. Erstellen Sie zunächst einen Nachrichten-Controller, um Vorgänge im Zusammenhang mit privaten Nachrichten abzuwickeln. Mit dem folgenden Befehl können wir einen Messages-Controller generieren:

php think make:controller Messages

Im Messages-Controller können wir zwei Methoden erstellen: Index und Senden.

  1. Index-Methode

Index-Methode wird verwendet, um die Liste der privaten Nachrichten des Benutzers anzuzeigen. Der Code lautet wie folgt:

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

Bei dieser Methode erhalten wir zunächst die Informationen des aktuell angemeldeten Benutzers. Fragen Sie dann alle privaten Nachrichten in der Nachrichtentabelle ab, deren Absender oder Empfänger der aktuelle Benutzer ist, und zeigen Sie sie in umgekehrter chronologischer Reihenfolge und im Paging an.

  1. send-Methode

send-Methode wird zum Senden privater Nachrichten verwendet. Der Code lautet wie folgt:

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

Bei dieser Methode erhalten wir zunächst den vom Benutzer eingegebenen privaten Nachrichteninhalt und die Empfänger-ID. Erstellen Sie dann eine neue Nachrichteninstanz, legen Sie die Absender-ID, die Empfänger-ID, den Inhalt und die Sendezeit fest und speichern Sie die private Nachricht in der Datenbank.

3. Ansichten

Schließlich müssen wir zwei Ansichten erstellen: messages.index und messages.send.

  1. messages.index-Ansicht

messages.index-Ansicht wird verwendet, um alle privaten Nachrichten des aktuellen Benutzers anzuzeigen. Der Code lautet wie folgt:

@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()}}

In dieser Ansicht verwenden wir eine Schleifenanweisung, um alle privaten Nachrichten zu durchlaufen Anzeige der Sender- und Empfängerinformationen wie Autor, Inhalt und Uhrzeit. Verwenden Sie am Ende die Paging-Funktion $messages->links(), um Paging-Links anzuzeigen.

  1. messages.send-Ansicht

messages.send-Ansicht wird verwendet, um das Formular zum Senden privater Nachrichten anzuzeigen. Der Code lautet wie folgt:

<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>

In dieser Ansicht verwenden wir ein Dropdown-Feld, um den Empfänger auszuwählen Erstellen Sie ein Textfeld, um den Inhalt der privaten Nachricht einzugeben.

4. Zusammenfassung

Durch die oben genannten Schritte können wir die Funktion für private Nachrichten im ThinkPHP-Framework implementieren. Während des Vorgangs sollte auf Fragen der Datensicherheit geachtet werden, z. B. ob der Benutzer eingeloggt ist, ob er Zugriffsrechte hat usw. Durch gutes Design und sichere Implementierung kann die Private-Messaging-Funktion das Nutzererlebnis sozialer Netzwerke besser verbessern.

Das obige ist der detaillierte Inhalt vonWie thinkphp die Funktion für private Nachrichten implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn