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

Bagaimana thinkphp melaksanakan fungsi mesej peribadi

PHPz
Lepaskan: 2023-04-17 10:38:21
asal
822 orang telah melayarinya

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;
Salin selepas log masuk

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;
Salin selepas log masuk

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
Salin selepas log masuk

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]);
}
Salin selepas log masuk

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');
}
Salin selepas log masuk

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()}}
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan