Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ποιες είναι οι συνηθισμένες περιπτώσεις χρήσης για τη μορφοποίηση στο Laravel


Ποιες είναι οι συνηθισμένες περιπτώσεις χρήσης για τη μορφοποίηση στο Laravel


Η σχέση «morphtomany» στο Laravel χρησιμοποιείται για τον καθορισμό πολλών προς πολλές πολυμορφικές σχέσεις, όπου πολλά μοντέλα μπορούν να μοιραστούν μια σχέση με έναν τύπο μοντέλου μέσω ενός πολυμορφικού ενδιάμεσου πίνακα. Αυτό επιτρέπει μια ευέλικτη συσχέτιση πολλών διαφορετικών μοντέλων σε ένα κοινό μοντέλο χωρίς να χρειάζεται ξεχωριστούς πίνακες περιστροφής για κάθε ζεύγος μοντέλων.

Κοινές περιπτώσεις χρήσης για «morphtomany» στο Laravel

** 1. Συστήματα ετικετών
Μία από τις πιο συνηθισμένες περιπτώσεις χρήσης είναι η εφαρμογή ενός συστήματος ετικετών όπου πολλά διαφορετικά μοντέλα (π.χ. αναρτήσεις, βίντεο, σελίδες) μπορούν να επισημανθούν με τις ίδιες ετικέτες. Αντί να έχουν ξεχωριστούς πίνακες περιστροφής για κάθε σχέση μοντέλου-ετικέτας, το `morphtomany` επιτρέπει σε όλες τις ετικέτες να αποθηκεύονται σε έναν μόνο πίνακα` ετικέτες 'και σχετικό πολυμορφικά με οποιοδήποτε μοντέλο.
Για παράδειγμα, τόσο τα μοντέλα "post" όσο και "βίντεο" μπορούν να έχουν μια μέθοδο `tags ()` χρησιμοποιώντας `morphtomany` για να ανακτήσουν ετικέτες και το μοντέλο` tag` μπορεί να χρησιμοποιήσει 'morphedbymany' για να πάρει όλες τις αναρτήσεις ή βίντεο με ετικέτα [1] [5] [9].

** 2. Κατηγοριοποίηση διαφόρων τύπων περιεχομένου
Παρόμοια με τις ετικέτες, οι κατηγορίες μπορούν να μοιραστούν σε διαφορετικούς τύπους περιεχομένου. Για παράδειγμα, ενδέχεται να χρειαστεί να κατηγοριοποιηθούν τόσο τα άρθρα όσο και τα προϊόντα και μια πολυμορφική σχέση πολλών προς πολλούς τους επιτρέπει να μοιράζονται κατηγορίες χωρίς περιττές πίνακες.

** 3. Ανάθεση ετικετών ή χαρακτηριστικών σε πολλαπλά μοντέλα
Εάν έχετε ετικέτες, χαρακτηριστικά ή χαρακτηριστικά που μπορούν να ισχύουν για διαφορετικά μοντέλα (π.χ. χρήστες, παραγγελίες, προϊόντα), χρησιμοποιώντας το `morphtomany` σας επιτρέπει να συσχετίσετε αυτές τις ετικέτες με ευελιξία με οποιοδήποτε τύπο μοντέλου.

** 4. Ρόλοι ή δικαιώματα χρήστη σε πολλούς τύπους χρηστών
Σε εφαρμογές με πολλαπλούς τύπους χρηστών (π.χ. διαχειριστή, πελάτη, πωλητής), οι ρόλοι ή τα δικαιώματα μπορούν να εκχωρηθούν πολυμορφικά χρησιμοποιώντας «morphtomany» έτσι ώστε οι ρόλοι να διαχειρίζονται σε ένα μόνο τραπέζι αλλά να σχετίζονται με διαφορετικά μοντέλα χρηστών [1].

** 5. Σύνδεση σχολίων ή συνημμένων σε πολλαπλά μοντέλα με μόδα πολλών προς πολλούς
Ενώ τα σχόλια είναι συχνά πολυμορφικά ενός προς πολλά, θα μπορούσαν να υπάρχουν σενάρια όπου πολλαπλά σχόλια ή συνημμένα σχετίζονται με πολλαπλά μοντέλα με πολλούς προς πολλούς τρόπους. Το «morphtomany» μπορεί να χρησιμοποιηθεί για να μοντελοποιήσει τέτοιες σχέσεις.

πώς λειτουργεί το "morphtomany`

- Χρησιμοποιεί έναν μόνο πίνακα περιστροφής, π.χ., `taggables`, με στήλες για` tag_id`, `taggable_id` και` taggable_type`.
- Οι στήλες `taggable_id` και` taggable_type 'επιτρέπουν στο laravel να καθορίσει ποιο μοντέλο σχετίζεται με το μοντέλο.
- Σχετικά με τα σχετικά μοντέλα (π.χ., `post`,` video`), ορίζετε μια μέθοδο που επιστρέφει `$ this-> morphtomany (tag :: class, 'taggable')`.
- Στο μοντέλο `tag`, ορίζετε αντίστροφες σχέσεις χρησιμοποιώντας` morphedbymany` για να ανακτήσετε όλα τα μοντέλα ενός δεδομένου τύπου που σχετίζεται με αυτήν την ετικέτα [1] [5].

Περίληψη

Το "Morphtomany` είναι ιδανικό όταν θέλετε να συσχετίσετε πολλαπλά μοντέλα με ένα κοινό μοντέλο με πολυμορφικό τρόπο πολλών προς πολλούς. Χρησιμοποιείται ευρέως για τα συστήματα ετικετών, την κατηγοριοποίηση, την αντιστοίχιση ρόλων σε πολλούς τύπους χρηστών και οποιοδήποτε σενάριο όπου πολλά διαφορετικά μοντέλα μοιράζονται ένα κοινό σύνολο σχετικών μοντέλων χωρίς να χρειάζονται ξεχωριστούς πίνακες περιστροφής για κάθε ζευγάρι.

Αυτή η προσέγγιση απλοποιεί τον σχεδιασμό της βάσης δεδομένων και τη συντήρηση κώδικα συγκεντρώνοντας πολυμορφικές σχέσεις πολλών προς πολλές σχέσεις σε μια ενιαία, κομψή δομή.

Αναφορές:
[1] https://blog.logrockocket.com/polymorphic relationships-laravel/
[2] https://laraveldaily.com/post/polymorphic-relations-laravel-open-source-exples
[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-relationships
[6] https://www.linkedin.com/pulse/complete-guide-polymorphic relationships-morphs-sajith-madhubashana-rk1xc
[7] https://joedixon.co.uk/a-practical-use-s-for-laravels-polymorphic ίδρυμα
[8] https://stackoverflow.com/questions/58811999/what-are-the-uses-of-morphs-column-type-in-laravel
[9] https://laraveldaily.com/post/laravel-polymorphic-many-to-many-get-all records