


Laravel Eloquent: Gunakan pertanyaan persatuan berbilang meja untuk mendapatkan senarai pengguna untuk pasukan tertentu
Dokumen ini bertujuan untuk membimbing pemaju tentang cara menggunakan Laravel Fasih Orm untuk melakukan pertanyaan persatuan multi-meja untuk mendapatkan senarai pengguna untuk pasukan tertentu. Kami akan menggunakan kaedah WhereHas (), menggabungkan pengguna, request_register dan tiga jadual data, untuk merealisasikan fungsi penapisan pengguna berdasarkan Team_ID, dan menyediakan kod sampel dan langkah berjaga -jaga untuk membantu anda memahami dan memohon fungsi pertanyaan yang berkaitan dengan Eloquent.
Gunakan WhereHas () untuk melakukan pertanyaan persatuan pelbagai meja
Di Laravel, kaedah WhereHas () adalah alat yang berkuasa untuk menanyakan data yang wujud dengan hubungan tertentu. WhereHas () dapat mempermudah logik pertanyaan kita apabila kita perlu menapis data jadual utama berdasarkan syarat -syarat dalam jadual yang berkaitan.
Katakan kami mempunyai tiga jadual: pengguna, request_register dan pasukan, dan struktur mereka adalah seperti berikut:
Jadual Pengguna
Nama Senarai | Jenis data | menggambarkan |
---|---|---|
user_id | Int | ID Pengguna |
name_user | Varchar | nama pengguna |
kenalan | Varchar | Maklumat hubungan |
request_id | Int | Permintaan ID |
Jadual Request_Register
Nama Senarai | Jenis data | menggambarkan |
---|---|---|
request_id | Int | Permintaan ID |
user_id | Int | ID Pengguna |
Team_id | Int | ID Pasukan |
Jadual pasukan
Nama Senarai | Jenis data | menggambarkan |
---|---|---|
Team_id | Int | ID Pasukan |
name_team | Varchar | Nama Pasukan |
Matlamat kami adalah untuk mendapatkan maklumat mengenai semua pengguna yang tergolong dalam pasukan tertentu (mis. Team_id adalah 1).
Pertama, kita perlu menentukan hubungan dengan model RequestRegister dalam model pengguna:
// app/model/user.php Model Namespace App \ Models; Gunakan Illuminate \ Database \ Eloquent \ Model; Pengguna kelas memanjangkan model { permintaan awam permintaan_register () { kembali $ this-> hasone (requestRegister :: class, 'user_id', 'user_id'); } }
Kemudian, tentukan hubungan dengan model pasukan dalam model RequestRegister:
// App/Model/RequestRegister.php Model Namespace App \ Models; Gunakan Illuminate \ Database \ Eloquent \ Model; Kelas RequestRegister memanjangkan model { dilindungi $ table = 'request_register'; // Pastikan untuk menentukan nama Jadual Fungsi Awam () { kembali $ this-> milik (pasukan :: kelas, 'team_id', 'team_id'); } Pengguna Fungsi Awam () { kembali $ this-> dandan (pengguna :: kelas, 'user_id', 'user_id'); } }
Akhirnya, tentukan hubungan dengan model RequestRegister dalam model pasukan:
// App/Model/Team.php Model Namespace App \ Models; Gunakan Illuminate \ Database \ Eloquent \ Model; Pasukan Kelas Memperluas Model { dilindungi $ Table = 'Teams'; // Pastikan untuk menentukan nama jadual fungsi awam Request_Registers () { kembali $ this-> hasmany (requestRegister :: class, 'Team_id', 'Team_id'); } }
Seterusnya, kita boleh menggunakan kaedah WhereHas () untuk menanyakan pengguna milik pasukan tertentu:
Gunakan App \ Models \ User; Gunakan Illuminate \ Database \ Eloquent \ Builder; $ TeamId = 1; // Katakan kami ingin menanyakan pengguna pasukan dengan Team_ID dari 1 $ pengguna = user :: whereHas ('request_register', function (pembina $ query) use ($ TeamId) { $ query-> where ('team_id', $ teamId); })-> mendapatkan (); // $ pengguna kini mengandungi maklumat mengenai semua pengguna yang Team_ID adalah 1 // anda boleh melengkung melalui pengguna $ untuk mendapatkan maklumat terperinci setiap pengguna foreach ($ pengguna sebagai pengguna $) { echo "ID Pengguna:". $ user-> user_id. ", Nama:". $ user-> name_user. ", Kenalan:". $ user-> kenalan. "<br>"; }
Kod ini mula -mula mentakrifkan TeamID untuk pertanyaan. Kemudian, gunakan pengguna :: di mana ('request_register', ...) untuk menapis jadual pengguna, dengan syarat hubungan dengan request_register wujud dan bahawa team_id dalam jadual request_register adalah sama dengan $ TeamId. Kaedah GET () digunakan untuk mendapatkan semua koleksi pengguna yang memenuhi kriteria.
Perkara yang perlu diperhatikan
- Definisi hubungan: Pastikan hubungan antara jadual ditakrifkan dengan betul dalam model. Ini adalah penting untuk kaedah WhereHas () untuk berfungsi dengan baik.
- Prestasi: Untuk dataset yang besar, pertanyaan persatuan multi-meja boleh menjejaskan prestasi. Pertimbangkan dengan menggunakan kaedah dengan () untuk memuatkan data yang berkaitan, atau gunakan pertanyaan SQL asli untuk pengoptimuman.
- Nama Jadual: Pastikan nama jadual yang betul ditentukan dalam model, terutamanya jika nama jadual bukan bentuk jamak nama model.
- Indeks: Mewujudkan indeks pada medan yang sering digunakan untuk pertanyaan dapat meningkatkan prestasi pertanyaan dengan ketara.
Meringkaskan
Kaedah WhereHas () adalah alat yang sangat berguna dalam Laravel fasih yang membolehkan pertanyaan persatuan multi-meja yang mudah. Dengan betul menentukan hubungan antara model dan menggabungkan kaedah WherHas (), kita boleh dengan mudah menapis data jadual utama berdasarkan keadaan dalam jadual persatuan. Dalam aplikasi praktikal, adalah perlu untuk memberi perhatian kepada ketepatan pengoptimuman prestasi dan definisi hubungan untuk memastikan kecekapan pertanyaan dan ketepatan data.
Atas ialah kandungan terperinci Laravel Eloquent: Gunakan pertanyaan persatuan berbilang meja untuk mendapatkan senarai pengguna untuk pasukan tertentu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Phparrayshandledatacollectionsefficientlyusingindexedorassociativestructures; theareCreatedWithArray () atau [], AccessedViAkeys, ModifiedByAssignment, iteratedWithForeach, danManipulatedingingingingFuntionsLikeCount ()

Tutorial ini memberikan arahan terperinci tentang cara menambah butang "Hantar Petikan" kepada setiap artikel dalam WordPress dalam senarai jenis artikel tersuai. Selepas mengklik, borang HTML tersuai dengan ID artikel muncul, dan data borang adalah penyerahan Ajax dan paparan mesej kejayaan. Kandungan ini meliputi tetapan pop timbul UI JQuery UI, pemindahan data dinamik, pemprosesan permintaan AJAX, serta back-end WordPress Ajax Hook dan pelaksanaan PHP pemprosesan data, memastikan fungsi lengkap, pengalaman pengguna yang selamat dan baik.

Useinterfacestodefinecontractsforunrelatedclasses,ensuringtheyimplementspecificmethods;2.Useabstractclassestosharecommonlogicamongrelatedclasseswhileenforcinginheritance;3.Usetraitstoreuseutilitycodeacrossunrelatedclasseswithoutinheritance,promotingD

$ _Cookieisaphpsuperglobalforaccessingcookiessentbrowser; cookiesareSetusingsetCookie () sebelum ini, readvia $ _cooKie ['name'], updatedbyresendingwithnewvalues, anddeletedbysettingexpadexpadexpoadexpadexpadexpadexpadexpadexpoadtimestamp, denganSecureStorsiredTimeShamp, denganSecureStyCoREdingB, denganSsecureStoStoStAb

Theobserverdesignpatternenablesautomaticnotificationofdependentobjectswhenasubject'sstatechanges.1) itdefinaone-to-manydependencybetweenobjects; 2) thesubjectmaintainsalistofobserversandnotifemmoninterfoninterface;

Tutorial ini memperincikan cara menambah butang kutipan hantar ke item senarai setiap jenis pos tersuai (seperti "hartanah") dalam WordPress, dan borang HTML tersuai dengan ID pos tertentu muncul selepas mengkliknya. Artikel ini akan meliputi cara membuat popup modal menggunakan dialog JQuery UI, secara dinamik lulus ID artikel melalui atribut data, dan menggunakan mekanisme WordPress AJAX untuk melaksanakan penyerahan asynchronous borang, sambil memproses fail memuat naik dan memaparkan hasil penyerahan, dengan itu memberikan pengalaman pengguna yang lancar.

B-treeindexesareBestFormostPhpapplications, astheysupportequalityandrangequeries, sorting, andareidealforcolumnsusedinwhere, gabungan, ororderbyclauses;

Tutorial ini akan memberikan arahan terperinci tentang cara melaksanakan borang penyerahan pop timbul di WordPress untuk butang mandiri untuk setiap jawatan tersuai (seperti jenis "hartanah"). Kami akan menggunakan dialog JQuery UI untuk membuat kotak modal dan secara dinamik lulus ID artikel melalui JavaScript. Di samping itu, tutorial akan meliputi cara menghantar data borang melalui AJAX dan mengendalikan logik backend tanpa menyegarkan halaman, termasuk muat naik fail dan maklum balas hasil.
