Laravelis toimuvat suhet morphtomany abil kasutatakse paljude ja paljude polümorfsete suhete määratlemiseks, kus mitmel mudelil saab suhet ühe mudelitüübiga jagada polümorfse vahetabeli kaudu. See võimaldab paljude erinevate mudelite paindlikku seost ühise mudeliga, vajamata iga mudelipaari jaoks eraldi pöördetabeleid.
Laraveli morphtomaanide levinud juhtumid
** 1. Sildistamissüsteemid
Üks levinumaid juhtumeid on sildistamise süsteemi rakendamine, kus mitmeid erinevaid mudeleid (nt postitused, videod, lehed) saab sildistada samade siltidega. Selle asemel, et omada eraldi pöördetabeleid iga mudeli-sildi suhte jaoks, võimaldab `morphtomany` kõiki silte salvestada ühte` siltide tabelisse ja seostada polümorfselt mis tahes mudeliga.
Näiteks võivad nii "Posti" kui ka videomudelitel olla `sildid ()` meetod, mis kasutab siltide hankimiseks `morphtomany`, ja mudel` sildil "saab kasutada` morphedbymany ", et saada kõik postitused või videod sellega sildistada [1] [5] [5].
** 2. Erinevate sisutüüpide kategoriseerimine
Sarnaselt siltidega saab kategooriaid jagada erinevate sisutüüpide vahel. Näiteks võib-olla tuleb nii artikleid kui ka tooteid kategoriseerida ning polümorfne paljude ja paljude suhe võimaldab neil jagada kategooriaid ilma koondatud tabeliteta.
** 3. Siltide või atribuutide määramine mitmele mudelile
Kui teil on silte, atribuute või funktsioone, mis võivad erinevatele mudelitele (nt kasutajad, tellimused, tooted) kasutada, võimaldab `morphtomany` abil need sildid paindlikult seostada mis tahes mudelitüübiga.
** 4. Kasutajarollid või õigused mitme kasutajatüübi vahel
Mitme kasutajatüübiga (nt administraator, klient, müüja) rakendustes saab rolle või õigusi omistada polümorfselt, kasutades `morphtomani”, nii et rolle hallatakse ühes tabelis, kuid need on seotud erinevate kasutajamudelitega [1].
** 5. Kommentaaride või manuste sidumine mitme mudeliga mitmel viisil
Kuigi kommentaarid on sageli üks-paljude polümorfsed, võivad olla stsenaariumid, kus mitu kommentaari või manuseid on mitmel mudelil mitmel viisil seotud. Selliste suhete modelleerimiseks saab kasutada `morphtomanyt.
Kuidas `morphtomany` töötab
- See kasutab ühte pöördetabelit, nt `TagGables`, veergudega` Tag_id`, `TagGable_id` ja` TagGable_type`.
- veerud `tagGable_id` ja` TagGable_type` lubavad Laravelil kindlaks teha, millise mudeliga silt on seotud.
- Seotud mudelitel (nt `Post`,` Video ’) määratlete meetodi, mis tagastab $ this-> morphtomany (tag :: class, 'tagGable')`.
- Mudeli `sildil määratlete pöördsuhted, kasutades` morphedbymany`, et saada kõik selle sildiga seotud antud tüübi mudelid [1] [5].
Kokkuvõte
`morphtomany` on ideaalne siis, kui soovite seostada mitut mudelit ühise mudeliga mitmel mitmel polümorfsel viisil. Seda kasutatakse laialdaselt süsteemide sildistamiseks, kategoriseerimiseks, rollide määramiseks mitme kasutaja tüübi vahel ja mis tahes stsenaariumi, kus paljudel erinevatel mudelitel on ühist seotud mudelite komplekti, ilma et oleks vaja iga paari jaoks eraldi pöördetabeleid.
See lähenemisviis lihtsustab andmebaaside kujundamist ja koodide hooldamist, tsentraliseerides polümorfsed paljude suhted üheks elegantseks struktuuriks.
Tsitaadid:
]
]
]
]
[5] https://laravel.com/docs/11.x/eloquent-rationships
]
]
]
]