Bagaimana menggunakan hubungan Hasonythrough di Laravel?
Negara boleh mengakses semua jawatan melalui pengguna menggunakan Hasonythrough. Sebagai contoh, dengan negara, pengguna, dan jadual jawatan yang dikaitkan dengan kunci asing, model negara mentakrifkan hubungan hasmanyhrough untuk menyiarkan melalui pengguna, membolehkan pengambilan data tidak langsung yang cekap merentasi dua hubungan satu-ke-banyak dalam satu pertanyaan.
Hubungan Hasmanythrough di Laravel membolehkan anda mengakses model berkaitan jauh melalui model perantaraan. Ia berguna apabila anda ingin mengambil data dari model yang dua peringkat jauh melalui model tengah.
Memahami struktur hubungan
Sebagai contoh, pertimbangkan tiga model: negara , pengguna , dan pos . Negara mempunyai banyak pengguna, dan setiap pengguna mempunyai banyak jawatan. Dengan hasManyThrough
, anda boleh mendapatkan semua jawatan yang dimiliki oleh pengguna dari negara tertentu - walaupun negara tidak memiliki jawatan secara langsung.
hasManyThrough
Laravel berfungsi seperti hubungan "lulus". Ia tidak memerlukan jadual pivot kerana ia melintasi dua hubungan satu-ke-banyak yang mudah.
Contoh struktur jadual pangkalan data
- Negara : id,
- pengguna nama: id, country_id,
- catatan nama: id, user_id, tajuk
Dalam persediaan ini:
- Setiap pengguna milik negara (melalui
country_id
) - Setiap siaran milik pengguna (melalui
user_id
) - Anda boleh menggunakan
hasManyThrough
di negara untuk mendapatkan semua jawatan melalui pengguna
Menyediakan hubungan yang fasih
Dalam model negara anda:
negara kelas memanjangkan model { Catatan Fungsi Awam () { kembali $ this-> hasonythrough ( Pos :: Kelas, // Model Akhir yang anda mahu akses Pengguna :: Kelas, // Model Pertengahan 'country_id', // Kunci asing pada jadual pengguna (titik ke negara) 'user_id', // Kunci asing pada jadual siaran (mata kepada pengguna) 'id', // Kunci tempatan di Jadual Negara 'id' // kunci tempatan pada jadual pengguna ); } }
Parameter untuk hasManyThrough()
adalah:
- Pos :: Kelas - Model Sasaran
- Pengguna :: Kelas - Model Perantaraan
- Country_id - Kunci Asing di Jadual Pertengahan (
users
) - user_id - Kunci asing di jadual akhir (
posts
) - ID - Kunci Utama di Jadual Tempatan (
countries
) - ID - Kunci Utama di Jadual Perantaraan (
users
)
Dua parameter terakhir adalah pilihan jika anda menggunakan konvensyen Laravel lalai (seperti id
sebagai kunci utama).
Menggunakan hubungan dalam amalan
Setelah ditakrifkan, anda boleh mengambil jawatan melalui negara:
$ negara = negara :: cari (1); $ posts = $ country-> posts; foreach ($ posts as $ post) { echo $ post-> tajuk; }
Ini akan melaksanakan pertanyaan SQL tunggal menggunakan gabungan untuk menarik semua jawatan di mana pengguna yang berkaitan adalah milik negara yang diberikan.
Ia juga mungkin untuk menambah kekangan:
$ terkini = $ country-> posts ()-> where ('create_at', '> =', now ()-> subweek ())-> get ();
Pada asasnya, hasManyThrough
adalah bersih dan cekap apabila anda memerlukan akses tidak langsung merentasi dua hubungan satu arah. Hanya pastikan kunci asing anda dipetakan dengan betul, dan aliran data menjadikan akal logik.
Atas ialah kandungan terperinci Bagaimana menggunakan hubungan Hasonythrough di Laravel?. 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.

Stock Market GPT
Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak

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)

Buat Model dan Migrasi: Gunakan PhPartisanMake: ModelPost-M untuk menjana model dan fail penghijrahan, menentukan struktur meja dan jalankan phpartisanmigrate; 2. Operasi CRUD Asas: Gunakan pos :: semua (), cari (), buat (), simpan () dan padam () kaedah untuk menanyakan, membuat, mengemas kini dan memadam data; 3. Gunakan persatuan yang fasih: Tentukan hubungan dan hubungan hasmany dalam model, dan gunakan kaedah dengan () untuk memperlihatkan data yang berkaitan untuk mengelakkan masalah pertanyaan n 1; 4.

Sistem Taskscheduling Laravel membolehkan anda menentukan dan menguruskan tugas-tugas masa melalui PHP, tanpa mengedit secara manual dengan Crontab Server, anda hanya perlu menambah tugas cron yang dilaksanakan sekali seminit ke pelayan: *CD/Path-to-Your-Project && phpartisanschedule: RUN >>/null2> App \ Console \ Kernel Class; 1. Menentukan tugas boleh menggunakan kaedah perintah, panggilan atau eksekutif, seperti $ jadual-

Ya ya, ya, ya, ya, yapaS, yoyacreateasoiNworkWitThlyFollowingTheSestEps: 1.setuplaraveliausingcomposer, configurethe.Envfile, enNipAceAuthenticationEvheButreh/jetStream/fortifify, andRunMigrationsforUsermanGENGENGENGA

Polymorphicrelationshipsinlaravelallowamodelikecommentorimagetobelongtomultiplemodelssuchaspost, video, oruserusingasingleassociation.2.Thedatabaseschemarequires {Hubungan}

Menggunakan Laravel untuk membina backend mudah alih memerlukan terlebih dahulu memasang rangka kerja dan mengkonfigurasi persekitaran pangkalan data; 2. Tentukan laluan API dalam Laluan/API.PHP dan mengembalikan respons JSON menggunakan pengawal sumber; 3. Melaksanakan pengesahan API melalui Laravelsanctum untuk menjana token untuk penyimpanan dan pengesahan mudah alih; 4. Sahkan jenis fail apabila memuat naik fail dan simpannya pada cakera awam, dan buat pautan lembut untuk akses luaran; 5. Persekitaran pengeluaran memerlukan HTTPS, menetapkan had semasa, mengkonfigurasi CORS, melakukan kawalan versi API dan mengoptimumkan pengendalian ralat. Ia juga disyorkan untuk menggunakan sumber API, paging, beratur dan alat dokumen API untuk meningkatkan kebolehpercayaan dan prestasi. Gunakan Laravel untuk membina selamat,

Buat fail bahasa: Buat subdirektori untuk setiap bahasa (seperti en, es) dalam direktori sumber/lang dan tambahkan fail.php mesej, atau gunakan fail JSON untuk menyimpan terjemahan; 2. Tetapkan Bahasa Permohonan: Baca Header Permintaan Menerima bahasa melalui middleware atau mengesan bahasa melalui awalan URL, tetapkan bahasa semasa menggunakan apl ()-> setLocale (), dan daftar middleware di kernel.php; 3. Gunakan fungsi terjemahan: gunakan __ (), trans () atau @lang dalam pandangan untuk mendapatkan kandungan terjemahan, dan disyorkan untuk menggunakan __ () yang menyokong sandaran; 4.

Laravelusmonologtologmessagesviathelogfacade, withdefaultlogsstoredinstorage/logs/laravel.log.configurechannelsinconfig/logging.phptocontroloutput;

Pastikan terdapat lajur ingat_token dalam jadual pengguna. Penghijrahan lalai Laravel sudah termasuk medan ini. Jika tidak, ia akan ditambah melalui penghijrahan; 2. Tambah kotak semak dengan nama ingat dalam borang log masuk untuk menyediakan pilihan "Ingat Saya"; 3. Lulus parameter ingat kepada kaedah pengarang :: percubaan () semasa pengesahan manual untuk membolehkan log masuk berterusan; 4. "Ingatlah saya" berlangsung selama 5 tahun secara lalai, dan boleh disesuaikan melalui item konfigurasi Remember_for dalam config/auth.php; 5. laravel secara automatik membatalkan ingat_token apabila perubahan kata laluan atau pemadaman pengguna. Adalah disyorkan untuk menggunakan HTTPS untuk memastikan keselamatan dalam persekitaran pengeluaran; 6
