Ya, hubungan polimorfik di Laravel membolehkan model menjadi milik pelbagai model lain melalui satu persatuan. Untuk melaksanakannya: 1) Sediakan jadual pangkalan data dengan ID asing dan taip lajur (contohnya, Commentable_id dan Commentable_type); 2) Tentukan hubungan morphmany dalam model induk (pos dan video) yang menunjuk kepada model kanak -kanak (komen); 3) Tentukan hubungan morphto dalam model kanak -kanak (komen) untuk membolehkan resolusi dinamik; 4) Gunakan hubungan untuk mencipta dan mengambil rekod yang berkaitan, sambil memeriksa jenis apabila perlu. Petua utama termasuk memastikan ruang nama model yang betul dalam lajur _Type, pengindeksan untuk prestasi, dan secara pilihan menggunakan peta morph untuk mengelakkan menyimpan nama kelas penuh.
Ya, hubungan polimorfik adalah ciri yang kuat dalam Orm fasih Laravel yang membolehkan model menjadi milik lebih daripada satu model lain pada satu persatuan. Mereka amat berguna apabila anda mahukan tingkah laku atau hubungan bersama di pelbagai model - seperti komen, suka, atau tag.

Inilah cara melaksanakannya langkah demi langkah.

Menyediakan jadual pangkalan data
Untuk menyokong hubungan polimorfik, anda memerlukan dua lajur utama dalam jadual anak anda:
- Lajur ID asing (misalnya,
commentable_id
) - Lajur jenis yang menunjukkan model yang berkaitan (misalnya,
commentable_type
)
Sebagai contoh, jika anda mempunyai jadual comments
yang boleh dilampirkan pada kedua -dua posts
dan videos
, penghijrahan anda akan kelihatan seperti:

Skema :: Create ('Comments', Function (Blueprint $ Table) { $ Table-> id (); $ Table-> Text ('Body'); $ Table-> unsignedBigInteger ('Commentable_id'); $ Table-> String ('Commentable_type'); $ Table-> Timestamps (); });
Bidang _type
menyimpan nama kelas yang berkelayakan model yang berkaitan. Ini penting kerana Laravel menggunakannya secara dalaman untuk menyelesaikan model yang akan kembali.
Menentukan hubungan dalam model
Dalam model induk ( Post
dan Video
), anda menentukan hubungan morphMany
yang menunjuk kepada model kanak -kanak ( Comment
):
// post.php Komen Fungsi Awam () { kembali $ this-> morphmany (komen :: kelas, 'boleh dikomentari'); } // video.php Komen Fungsi Awam () { kembali $ this-> morphmany (komen :: kelas, 'boleh dikomentari'); }
Di sisi kanak -kanak ( Comment
), anda menentukan hubungan morphTo
:
// comment.php Fungsi awam boleh dikomentari () { kembali $ this-> morphto (); }
Ini membolehkan anda mengambil jawatan atau video yang berkaitan dari contoh komen menggunakan $comment->commentable
.
Bekerja dengan hubungan polimorfik
Setelah ditubuhkan, bekerja dengan hubungan ini merasakan sama seperti hubungan fasih yang lain.
Anda boleh membuat komen untuk siaran seperti ini:
$ pos = pos :: cari (1); $ Comment = Comment baru (['body' => 'artikel hebat!']); $ Post-> Comments ()-> SAVE ($ COMMENT);
Dan pengambilan juga mudah:
foreach ($ post-> komen sebagai $ komen) { echo $ comment-> body; }
Jika anda berurusan dengan pelbagai jenis ulasan, anda boleh menyemak jenis model yang anda hadapi:
$ commentable = $ comment-> commentable; jika ($ commentable contoh postance) { // Lakukan sesuatu dengan catatan } elseif ($ commentable contoh video) { // buat sesuatu dengan video }
Petua dan gotchas biasa
- Pastikan lajur
commentable_type
sepadan dengan ruang nama penuh model. Jika anda bergerak atau menamakan semula model kemudian, data sedia ada akan pecah melainkan anda mengemas kini rentetan tersebut. - Anda boleh mengindeks medan
commentable_id
dancommentable_type
untuk prestasi, terutamanya jika anda mengharapkan pertanyaan berat. - Gunakan peta morph jika anda tidak mahu nama kelas penuh yang disimpan dalam pangkalan data. Ini membantu mengelakkan masalah apabila menamakan semula/bergerak model.
Persediaan asas adalah mudah, tetapi memahami bagaimana Laravel menyelesaikan jenis dan mengendalikan pertanyaan di belakang tabir membuat perbezaan besar apabila menyahpepijat atau mengoptimumkan.
Itu pada dasarnya. Sebaik sahaja jadual dan hubungan ditakrifkan, semuanya mengalir secara semulajadi - pastikan anda mengawasi penamaan konsistensi dan resolusi model.
Atas ialah kandungan terperinci Melaksanakan hubungan fasih polimorfik 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.

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)

Topik panas

Artikel ini membawakan anda pengetahuan yang berkaitan tentang Laravel terutamanya memperkenalkan kepada anda pelaksanaan penguncian optimistik dalam model Laravel Eloquent. Rakan-rakan yang berminat boleh lihat di bawah.

Pembangunan Laravel: Bagaimana untuk menggunakan LaravelEloquent untuk melaksanakan persatuan polimorfik? Perkaitan polimorfik ialah ciri penting Laravel Eloquent, yang membolehkan satu model mewujudkan perhubungan dengan berbilang model yang berbeza. Dalam aplikasi praktikal, pemprosesan jenis data yang berbeza adalah agak mudah dan cekap, terutamanya dalam reka bentuk pangkalan data. Dalam artikel ini, kita akan membincangkan cara melaksanakan persatuan polimorfik menggunakan Laravel Eloquent. 1. Apakah persatuan polimorfik? Polimorfisme

Menukar tatasusunan kepada objek menggunakan Eloquent dalam Laravel memerlukan langkah berikut: Cipta model Eloquent. Gunakan kaedah pilih Eloquent untuk mendapatkan hasil dan tukarkannya kepada tatasusunan. Gunakan ArrayObject untuk menukar tatasusunan kepada objek. Mendapat harta objek untuk mengakses nilai tatasusunan.

Laravel ialah rangka kerja PHP popular yang merangkumi perpustakaan ORM (Object Relational Mapping) yang berkuasa-LaravelEloquent. Pustaka ini sangat berkuasa dan boleh membantu kami melaksanakan perkaitan model dengan mudah, menjadikannya lebih mudah untuk mengurus dan membuat pertanyaan data. Tetapi ramai pembangun tidak tahu cara menggunakan Laravel Eloquent untuk melaksanakan perkaitan model. Dalam artikel ini, saya akan memperkenalkan cara melaksanakan persatuan model menggunakan Laravel Eloquent. 1. Laravel

Laravel ialah rangka kerja web PHP popular yang popular kerana kesederhanaan dan kemudahan penggunaannya. Rangka kerja Laravel terkenal dengan pelaksanaan EloquentORM yang sangat baik, pemetaan Object-RelationalMini yang menyokong penggunaan PHP untuk mentakrifkan model pangkalan data dan menyediakan interaksi pangkalan data yang mudah berdasarkan model ini. Artikel ini akan memperincikan cara membina model menggunakan Laravel Eloquent untuk berinteraksi dengan pangkalan data dengan cepat dan boleh dipercayai.

Pembangunan Laravel: Bagaimana untuk membina model pangkalan data menggunakan LaravelEloquent? Laravel ialah rangka kerja PHP popular yang menyediakan alat operasi pangkalan data yang berkuasa dan mudah digunakan - Laravel Eloquent. Pada masa lalu, menggunakan PHP untuk operasi pangkalan data tidak dapat tidak memerlukan menulis sejumlah besar pernyataan SQL yang panjang dan kod yang menyusahkan Walau bagaimanapun, menggunakan Laravel Eloquent boleh membina model pangkalan data dengan mudah dan mencapai pembangunan dan penyelenggaraan yang pantas. Artikel ini

Memandangkan keperluan pembangun untuk interaksi data terus berkembang, ORM telah menjadi bahagian yang amat diperlukan dalam pembangunan moden. Ia boleh menyembunyikan operasi pangkalan data di latar belakang dan menyediakan API yang dipermudahkan untuk operasi CRUD. Di antara perpustakaan ORM ini, Eloquent telah menarik perhatian ramai pembangun kerana ia telah digunakan secara meluas dalam rangka kerja Laravel. Dalam PHP 8.0, Eloquent datang sebagai perpustakaan sambungan kendiri dan kini boleh digunakan dalam projek anda. Dalam artikel ini kita akan meneroka Eloq

Untuk membuat rekod baru dalam pangkalan data menggunakan fasih, terdapat empat kaedah utama: 1. Gunakan kaedah membuat untuk membuat rekod dengan cepat dengan lulus dalam array atribut, seperti pengguna :: create (['name' => 'Johndoe', 'e -mel' => 'John@example.com']); 2. Gunakan kaedah simpan untuk secara manual meniru model dan menetapkan nilai untuk menyimpan satu demi satu, yang sesuai untuk senario di mana tugasan bersyarat atau logik tambahan diperlukan; 3. Gunakan FirstOrcreate untuk mencari atau membuat rekod berdasarkan keadaan carian untuk mengelakkan data pendua; 4. Gunakan UpdateOrcreate untuk mencari rekod dan kemas kini, jika tidak, buatnya, yang sesuai untuk memproses data yang diimport, dan lain -lain, yang mungkin berulang.
