Rumah > rangka kerja php > Laravel > teks badan

Bagaimana untuk melaksanakan pertanyaan berkaitan dalam laravel dan mengembalikannya dalam format JSON

PHPz
Lepaskan: 2023-04-03 19:47:56
asal
1460 orang telah melayarinya

Laravel kini merupakan rangka kerja pembangunan PHP yang sangat popular dengan keupayaan ORM (Pemetaan Perhubungan Objek) yang berkuasa membolehkan pembangun menyelesaikan operasi pertanyaan pangkalan data yang kompleks dengan sangat mudah. Artikel ini akan memperkenalkan anda kepada cara menggunakan Laravel untuk melaksanakan pertanyaan berkaitan dan mengembalikan hasil pertanyaan dalam format JSON.

1. Pengenalan kepada pertanyaan berkaitan

Apa yang dipanggil pertanyaan berkaitan bermakna apabila membuat pertanyaan model, ia juga menanyakan maklumat model lain yang dikaitkan dengan model. Sebagai contoh, dalam sistem blog, setiap artikel mungkin mempunyai berbilang ulasan Pada masa ini, apabila kami perlu menanyakan artikel, kami juga menanyakan maklumat ulasan artikel. Ini adalah pertanyaan biasa yang berkaitan.

Laravel menyediakan pelbagai kaedah pertanyaan berkaitan, termasuk hasOne, hasMany, belongsTo, belongsToMany dan kaedah lain Pembangun boleh memilih kaedah yang sesuai mengikut keperluan sebenar.

2. Laksanakan pertanyaan berkaitan

Katakan kita mempunyai dua jadual data, satu ialah "artikel" dan satu lagi adalah "komen". kekunci "article_id" dalam jadual artikel menunjuk ke medan "id" dalam jadual ulasan.

Fungsi yang perlu kami laksanakan adalah untuk menanyakan maklumat artikel dan mengembalikan semua maklumat ulasan yang sepadan dengan artikel. Pertama, kita perlu mentakrifkan perkaitan dengan model ulasan (Ulasan) dalam model artikel (Artikel):

// Article.php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Article extends Model
{
    /**
     * 获取该文章的评论。
     */
    public function comments()
    {
        return $this->hasMany('App\Models\Comment');
    }
}
Salin selepas log masuk

Dalam model ini, kita mentakrifkan perkaitan satu-ke-banyak melalui $this->hasMany() Kaedah Hubungan, kaedah ini menerima dua parameter, parameter pertama ialah nama kelas model yang berkaitan, dan parameter kedua ialah nama kunci asing.

Seterusnya, kita boleh menggunakan kaedah with() dalam pengawal untuk melengkapkan pertanyaan perkaitan:

// ArticleController.php

namespace App\Http\Controllers;

use App\Models\Article;

class ArticleController extends Controller
{
    /**
     * 返回一篇文章对应的所有评论。
     *
     * @param int $id 文章ID
     * @return \Illuminate\Http\JsonResponse
     */
    public function show($id)
    {
        $article = Article::with('comments')->find($id);

        return response()->json($article);
    }
}
Salin selepas log masuk

Dalam kod di atas, kami menggunakan kaedah with() untuk menentukan perkaitan yang perlu ditanya Model, rentetan "komen" diluluskan di sini, menunjukkan bahawa kita perlu menanyakan semua ulasan yang sepadan dengan artikel. Akhir sekali, gunakan kaedah response()->json() untuk mengembalikan hasil pertanyaan dalam format JSON.

Pada ketika ini, kami mengakses /articles/1 (dengan mengandaikan ID artikel ialah 1) untuk mendapatkan respons JSON bagi artikel dan semua maklumat ulasan yang sepadan.

3. Senario Aplikasi

Pertanyaan berkaitan adalah sangat biasa dan praktikal dalam pembangunan Contohnya, dalam blog, forum, e-dagang dan sistem lain, produk, siaran, pesanan, dll berkaitan Ulasan, penilaian, koleksi dan maklumat lain. Menggunakan pertanyaan berkaitan dengan mudah boleh mendapatkan maklumat yang berkaitan dan meningkatkan kecekapan pembangunan.

4. Ringkasan

Artikel ini memperkenalkan anda kepada fungsi pertanyaan yang berkaitan dalam rangka kerja Laravel menggunakan ORM Laravel boleh menyelesaikan operasi pertanyaan pangkalan data yang kompleks. Melalui pengenalan artikel ini, saya percaya anda telah memahami cara melaksanakan pertanyaan berkaitan dalam Laravel dan mengembalikan keputusan dalam format JSON. Saya harap artikel ini dapat membantu pembangunan projek semua orang.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pertanyaan berkaitan dalam laravel dan mengembalikannya dalam format JSON. 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