Memandangkan Laravel menjadi salah satu rangka kerja yang paling popular untuk pembangunan PHP, semakin ramai pembangun mula menggunakannya untuk membina aplikasi web berprestasi tinggi dan boleh skala. Dalam Laravel, berbilang pertanyaan pangkalan data boleh dibuat dengan mudah menggunakan kaedah "dengan", yang boleh meningkatkan prestasi dengan berkesan dan mengurangkan masa pertanyaan. Artikel ini akan memperkenalkan penggunaan dan kelebihan kaedah "dengan" dalam Laravel.
1. Apakah kaedah "dengan"
Dalam Laravel, menggunakan kaedah "dengan" boleh menyelesaikan masalah "pertanyaan N+1" dengan mudah, iaitu apabila anda ingin membuat pertanyaan model dan modelnya Apabila mengaitkan model, jika anda menggunakan pertanyaan gelung, sejumlah besar pernyataan pertanyaan akan dijana, mengakibatkan kemerosotan prestasi. Menggunakan kaedah "dengan", Laravel boleh menanyakan data semua model yang berkaitan sekali gus, yang akan meningkatkan prestasi dan mengurangkan masa pertanyaan.
2. Penggunaan kaedah "dengan"
Kaedah "dengan" boleh digunakan dalam pertanyaan atau dalam model. Mari kita lihat sintaks menggunakan kaedah "dengan" dalam pertanyaan:
User::with('posts')->get();
Kod di atas boleh difahami sebagai: "tanya pengguna dan tanya semua artikel setiap pengguna bersama-sama". Kod ini sebenarnya hanya melakukan dua pertanyaan, satu untuk pengguna dan semua artikel yang dikaitkan dengan pengguna, bukannya satu pertanyaan untuk setiap pengguna.
Selain korelasi mudah, anda juga boleh menapis pertanyaan dengan menghantar fungsi tanpa nama. Sebagai contoh, kami hanya boleh membuat pertanyaan untuk artikel yang disiarkan oleh pengguna pada minggu lepas:
User::with(['posts' => function($query) { $query->where('created_at', '>=', Carbon::now()->subWeek()); }])->get();
Dengan menggunakan fungsi tanpa nama, kami boleh menentukan perhubungan dan penapis khusus model serta panggilan berantai kepada berbilang persatuan mengikut keperluan. Contohnya, dalam aplikasi blog, kami ingin menanyakan semua artikel dan pengarang, ulasan dan pengarang ulasannya:
$posts = Post::with(['author', 'comments', 'comments.author'])->get();
Kod di atas menanyakan semua artikel dan pengarang, ulasan dan pengarang ulasannya, sahaja 3 pertanyaan telah dilaksanakan dan bukannya satu pertanyaan pada satu masa. Ini akan meningkatkan prestasi dan mengurangkan masa pertanyaan.
3. Kelebihan kaedah "dengan"
Kelebihan menggunakan kaedah "dengan" ialah ia boleh mengurangkan bilangan pertanyaan pangkalan data, meningkatkan prestasi dan mengurangkan masa pertanyaan. Apabila anda perlu menanyakan berbilang model berkaitan, dengan menggunakan kaedah "dengan", anda boleh melakukan hanya satu pertanyaan dan bukannya pertanyaan berasingan untuk setiap model. Ini akan mengurangkan permintaan pangkalan data, sekali gus meningkatkan prestasi.
Pada masa yang sama, kaedah "dengan" Laravel boleh menapis pertanyaan dengan menghantar fungsi tanpa nama untuk mengoptimumkan lagi pertanyaan. Ini bermakna anda boleh merantai perhubungan dan menapis bersama-sama seperti yang diperlukan dan mempunyai fleksibiliti untuk membuat pertanyaan dan mendapatkan hasil yang tepat.
4. Ringkasan
Kaedah "dengan" Laravel ialah alat yang berkuasa untuk mengoptimumkan pertanyaan pangkalan data, yang boleh mengurangkan bilangan pertanyaan pangkalan data, meningkatkan prestasi dan mengurangkan masa pertanyaan. Berbanding dengan menanyakan setiap model berkaitan secara individu, menggunakan kaedah "dengan" membolehkan pengurusan dan pemprosesan data berkaitan yang lebih baik, meningkatkan prestasi dan kebolehskalaan aplikasi web. Jika anda membina aplikasi web menggunakan Laravel, maka kaedah "dengan" akan menjadi salah satu alat penting untuk meningkatkan prestasi pertanyaan.
Atas ialah kandungan terperinci dengan laravel penggunaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!