Rumah  >  Artikel  >  rangka kerja php  >  Bagaimana thinkphp melaksanakan fungsi mesej peribadi

Bagaimana thinkphp melaksanakan fungsi mesej peribadi

PHPz
PHPzasal
2023-04-17 10:28:26751semak imbas

Dengan pembangunan rangkaian sosial, fungsi mesej peribadi telah menjadi ciri penting rangkaian sosial moden. Dalam ThinkPHP, tidak sukar untuk melaksanakan fungsi mesej peribadi Artikel ini akan memperkenalkan cara menggunakan rangka kerja ThinkPHP untuk melaksanakan fungsi mesej peribadi.

1. Reka bentuk pangkalan data

Untuk melaksanakan fungsi mesej peribadi, anda perlu mereka bentuk pangkalan data terlebih dahulu. Kita boleh membuat dua jadual, jadual pengguna dan jadual mesej.

Jadual pengguna mengandungi id pengguna, nama pengguna, kata laluan dan maklumat lain:

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;

Jadual mesej mengandungi id mesej peribadi, id pengirim dan penerima, kandungan mesej peribadi, Masa penghantaran dan maklumat lain:

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

Kini, kita boleh mula melaksanakan fungsi mesej peribadi. Mula-mula, buat pengawal Mesej untuk mengendalikan operasi yang berkaitan dengan mesej peribadi. Kita boleh menjana pengawal Mesej dengan arahan berikut:

php think make:controller Messages

Dalam pengawal Mesej, kita boleh mencipta dua kaedah: indeks dan hantar.

  1. kaedah indeks

Kaedah indeks digunakan untuk memaparkan senarai mesej peribadi pengguna Kod adalah seperti berikut:

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

Dalam ini kaedah, kami mula-mula mendapatkan Maklumat tentang pengguna yang sedang log masuk. Kemudian, tanya semua mesej peribadi dalam jadual mesej yang pengirim atau penerimanya ialah pengguna semasa, dan paparkannya dalam susunan kronologi terbalik dan dalam halaman.

  1. kaedah hantar

Kaedah hantar digunakan untuk menghantar mesej peribadi Kodnya adalah seperti berikut:

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

Dalam kaedah ini, kami mula-mula dapatkan input pengguna Kandungan mesej peribadi dan ID penerima. Kemudian, buat contoh Mesej baharu, tetapkan id penghantar, id penerima, kandungan dan masa penghantaran dan simpan mesej peribadi ke pangkalan data.

3. Views

Akhir sekali, kita perlu mencipta dua paparan: messages.index dan messages.send.

  1. messages.index view

messages.index view digunakan untuk memaparkan semua mesej peribadi pengguna semasa Kodnya adalah seperti berikut:

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

Dalam paparan ini, kami menggunakan pernyataan gelung untuk merentasi semua mesej peribadi dan memaparkan maklumat seperti pengirim, penerima, kandungan dan masa. Pada akhirnya, gunakan fungsi paging $messages->links() untuk memaparkan pautan paging.

  1. messages.send view

messages.send view digunakan untuk memaparkan borang untuk menghantar mesej peribadi Kodnya adalah seperti berikut:

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

Dalam paparan ini, kami menggunakan kotak lungsur untuk memilih penerima dan mencipta kotak teks untuk memasukkan kandungan mesej peribadi.

4. Ringkasan

Melalui langkah di atas, kita boleh melaksanakan fungsi mesej peribadi dalam rangka kerja ThinkPHP. Semasa operasi, perhatian harus diberikan kepada isu keselamatan data, seperti sama ada pengguna log masuk, sama ada dia mempunyai hak untuk mengakses, dsb. Melalui reka bentuk yang baik dan pelaksanaan selamat, fungsi pemesejan peribadi boleh meningkatkan pengalaman pengguna rangkaian sosial dengan lebih baik.

Atas ialah kandungan terperinci Bagaimana thinkphp melaksanakan fungsi mesej peribadi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn