`Morphtomany` attiecības laravelā tiek izmantotas, lai definētu daudzus no daudziem polimorfām attiecībām, kur vairākiem modeļiem var dalīties saistībā ar vienu modeļa veidu, izmantojot polimorfu starpposma tabulu. Tas ļauj elastīgai daudzu dažādu modeļu saistībai ar kopīgu modeli, neprasot atsevišķas šarnīra tabulas katram modeļa pārim.
Bieži lietošanas gadījumi `morfomany` laravel
** 1. Marķēšanas sistēmas
Viens no visbiežāk sastopamajiem gadījumiem ir marķēšanas sistēmas ieviešana, kurā vairākus dažādus modeļus (piemēram, ziņas, video, lapas) var marķēt ar vienādiem tagiem. Tā vietā, lai katrai modeļa marķējuma attiecībām būtu atsevišķas šarnīra tabulas, "morfomany" ļauj visus tagus saglabāt vienā "tagu" tabulā un ar to saistīto polimorfiski ar jebkuru modeli.
Piemēram, gan `post`, gan` video` modeļiem var būt `tagi ()` metode, izmantojot `morphtomany`, lai iegūtu tagus, un modelis` tag` var izmantot `morfedbymany`, lai iegūtu visus ierakstus vai videoklipus ar to [1] [5] [9].
** 2. Dažādu satura veidu klasificēšana
Līdzīgi kā tagi, kategorijas var koplietot dažādos satura veidos. Piemēram, gan raksti, gan produkti, iespējams, būs jāklasificē, un polimorfās attiecības ar daudziem cilvēkiem ļauj viņiem dalīties kategorijās bez liekām tabulām.
** 3. Etiķešu vai atribūtu piešķiršana vairākiem modeļiem
Ja jums ir etiķetes, atribūti vai funkcijas, kas var attiekties uz dažādiem modeļiem (piemēram, lietotājiem, pasūtījumiem, produktiem), izmantojot `morfomany`, ļauj šīs etiķetes elastīgi saistīt ar jebkuru modeļa veidu.
** 4. Lietotāju lomas vai atļaujas vairākos lietotāju veidos
Lietojumprogrammās ar vairākiem lietotāju tipiem (piemēram, administratoru, klientu, pārdevēju) lomām vai atļaujām var piešķirt polimorfiski, izmantojot `morfomaniju, lai lomas tiktu pārvaldītas vienā tabulā, bet saistītas ar dažādiem lietotāju modeļiem [1].
** 5. Komentāru vai pielikumu saistīšana ar vairākiem modeļiem daudzos veidos
Kaut arī komentāri bieži ir viens pret daudziem polimorfiem, varētu būt scenāriji, kad vairāki komentāri vai pielikumi ir saistīti ar vairākiem modeļiem daudzos pret daudziem. `Morphomomany` var izmantot, lai modelētu šādas attiecības.
Kā darbojas `morphomany`
- Tas izmanto vienu šarnīra tabulu, piemēram, `taggables`, ar kolonnām` tag_id`, `taggable_id` un` taggable_type`.
- kolonnas `taggable_id` un` taggable_type` ļauj Laravel noteikt, ar kuru modeli tags ir saistīts.
- Saistītajos modeļos (piemēram, "Post", "Video") jūs definējat metodi, kas atgriež `$ this-> morpomany (tag :: klase," taggable ")`.
- Modelī “TAG” jūs definējat apgrieztas attiecības, izmantojot `morfedbymany`, lai izgūtu visus ar šo tagu saistītā tipa modeļiem [1] [5].
Kopsavilkums
`Morphtomany` ir ideāls, ja vēlaties vairākus modeļus saistīt ar kopīgu modeli daudzos no daudziem polimorfiskiem veidiem. To plaši izmanto sistēmu marķēšanai, kategorizēšanai, lomu piešķiršanai vairākos lietotāju veidos un jebkuram scenārijam, kurā daudziem dažādiem modeļiem ir kopīgs saistīto modeļu kopums, kuram katram pārim nav nepieciešami atsevišķas šarnīra tabulas.
Šī pieeja vienkāršo datu bāzes projektēšanu un kodu uzturēšanu, centralizējot polimorfās daudzas attiecības vienā, elegantā struktūrā.
Atsauces:
[1] https://blog.logrocket.com/polymorphic-reelationhips-laravel/
[2] https://laraveldaily.com/post/polymorphic-reelations-laravel-open-source-examples
[3] https://stackoverflow.com/questions/57522923/how-to-use-use-morpomany
[4] https://stackoverflow.com/questions/43285779/laravel-polymorphic-relations-has-many-hrough
[5] https://laravel.com/docs/11.x/eloquent-reelationships
[6.]
[7] https://joedixon.co.uk/a-pracical-use-case-for- laravels-polimorfiskās attiecības
[8] https://stackoverflow.com/questions/58811999/what-are-the-uses-of-morphs-column-type-in-inavel
[9] https://laraveldaily.com/post/laravel-polymorphic-many-to-many-get-all-related-Records