Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kokie yra „Laravel“ morftomanijos naudojimo atvejai


Kokie yra „Laravel“ morftomanijos naudojimo atvejai


„Morftomany“ ryšys „Laravel“ yra naudojamas apibrėžti daugybę polimorfinių ryšių, kai keli modeliai gali pasidalyti ryšiu su vieno modelio tipu per polimorfinę tarpinę lentelę. Tai leidžia lanksčiam daugelio skirtingų modelių susiejimui su bendruoju modeliu, nereikia kiekvienos modelio poros, nereikia atskirų šerdesių lentelių.

Bendrieji „morftomany“ naudojimo atvejai „Laravel“

** 1. Žymos sistemos
Vienas iš labiausiai paplitusių naudojimo atvejų yra žymėjimo sistemos įdiegimas, kai keli skirtingi modeliai (pvz., Žinutės, vaizdo įrašai, puslapiai) gali būti pažymėti tomis pačiomis žymėjimais. Užuot turėję atskiras šerdies lenteles kiekvienam modelio žymos ryšiui, „Morphtomany“ leidžia visas žymes laikyti vienoje „žymų“ lentelėje ir polimorfiškai susieti su bet kokiu modeliu.
Pvz., Tiek „Post“, tiek „Video“ modeliai gali turėti „žymų ()“ metodą, naudojant „morphtomany“ žymas, o „TAG“ modelis gali naudoti „morphedbymany“, kad visi pranešimai ar vaizdo įrašai būtų pažymėti [1] [5] [9].

** 2. Įvairių turinio tipų suskirstymas į kategorijas
Panašiai kaip žymės, kategorijos gali būti dalijamos įvairiais turinio tipais. Pavyzdžiui, tiek straipsnius, tiek produktus gali reikėti suskirstyti į kategorijas, o polimorfinis santykis su daugybe iki daugybės leidžia jiems dalytis kategorijomis be nereikalingų lentelių.

** 3. Priskirkite etiketes ar atributus keliems modeliams
Jei turite etiketes, atributus ar funkcijas, kurios gali būti taikomos skirtingiems modeliams (pvz., Vartotojams, užsakymams, produktams), naudojant „morftomany“ leidžia šias etiketes susieti lanksčiai su bet kokiu modelio tipu.

** 4. Vartotojo vaidmenys ar leidimai įvairiuose vartotojų tipuose
Programos su keliais vartotojų tipais (pvz., Administratoriumi, klientu, pardavėju), vaidmenys ar leidimai gali būti priskirti polimorfiškai naudojant „morftomany“, kad vaidmenys būtų valdomi vienoje lentelėje, tačiau susiję su skirtingais vartotojų modeliais [1].

** 5. Komentarų ar priedų susiejimas su keliais modeliais
Nors komentarai dažnai būna nuo vieno su daugybe polimorfinių, gali būti scenarijų, kai keli komentarai ar priedai yra susiję su keliais modeliais daugybe ir daugybe. „Morftomany“ gali būti naudojamas tokiems santykiams modeliuoti.

Kaip veikia „morphtomany“

- Tam naudojama viena šerdies lentelė, pvz., „Taggables“, su stulpeliais „tag_id“, „taggable_id“ ir „taggable_type“.
- „Taggable_ID“ ir „TAGGABLE_TYPE“ stulpeliai leidžia „Laravel“ nustatyti, su kuriuo modelyje žyma yra susieta.
- Susijusiuose modeliuose (pvz., „Post“, „Video“) jūs apibrėžiate metodą, kuris grąžina „$ this-> Morphtomany (Tag :: Class“, „Taggable“) “.
- Pagal „Tag“ modelį jūs apibrėžiate atvirkštinius ryšius, naudodamiesi „Morphedbymany“, kad gautumėte visus tam tikro tipo modelius, susijusius su ta žyma [1] [5].

Santrauka

„Morphtomany“ yra idealu, kai norite susieti kelis modelius su įprastu modeliu daugybe polimorfinių modelių. Jis plačiai naudojamas žymėjimo sistemoms, kategorizavimui, vaidmenų priskyrimui įvairiuose vartotojų tipuose ir bet kokį scenarijų, kai daugelis skirtingų modelių turi bendrą susijusių modelių rinkinį, nereikia kiekvienos poros atskirų šerdesių lentelių.

Šis požiūris supaprastina duomenų bazės projektavimą ir kodo priežiūrą, centralizuojant polimorfinius ryšius su daugybe santykių į vieną, elegantišką struktūrą.

Citatos:
[1] https://blog.logrocket.com/polimorfiniai-Relationshipshlavel/
[2] https://laraveldaily.com/post/polymorphic-relations-laravel-open-source-examples
[3] https://stackoverflow.com/questions/57522923/how-to-use-morphtomany
[4] https://stackoverflow.com/questions/43285779/laravel-polymorphic-relations-has- Many-through
[5] https://laravel.com/docs/11.x/eloquent-trationshipships
[6] https://www.linkedin.com/pulse/complete-guide-polymorphic-reliationships-morphs-sajith-madhubashana-rk1xc
[7] https://joedixon.co.uk/a-practical-use-case-for-laravels-polimorfiniai-reliacijos
[8] https://stackoverflow.com/questions/58811999/wather-are-the-uses-of-morphs-solumn-type-in-laravel
[9] https://laraveldaily.com/post/laravel-polymorphic- Many-to-many-get-all-reliated-records