Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Каковы общие варианты использования для морфтомана в Ларавеле


Каковы общие варианты использования для морфтомана в Ларавеле


Отношения «морфтоман» в Ларавеле используются для определения полиморфных отношений многих ко многим, где несколько моделей могут поделиться взаимосвязи с одним типом модели с помощью полиморфной промежуточной таблицы. Это позволяет гибкой ассоциации множества различных моделей к общей модели без необходимости отдельных таблиц поворота для каждой пары моделей.

Общие варианты использования для `morphtomany` в Laravel

** 1. Системы тегов
Одним из наиболее распространенных вариантов использования является реализация системы тегов, где могут быть помечены несколько различных моделей (например, публикации, видео, страницы). Вместо того, чтобы иметь отдельные таблицы поворотных таблиц для каждой модельной зависимости, «Morphtomany» позволяет хранить все теги в одной таблице «теги» и полиморфически связан с любой моделью.
Например, обе модели «post» и `Video 'могут иметь метод` Tags () `с использованием` morphtomany' для получения тегов, а модель `Tag` может использовать` morphedbymany`, чтобы получить все сообщения или видео, помеченные ей [1] [5] [9].

** 2. Категоризация различных типов контента
Подобно тегам, категории могут использоваться по разным типам контента. Например, как статьи, так и продуктов, возможно, потребуются классифицировать, а полиморфное соотношение от многих ко многим позволяет им делиться категориями без избыточных таблиц.

** 3. Присвоение меток или атрибутов нескольким моделям
Если у вас есть метки, атрибуты или функции, которые могут применяться к различным моделям (например, пользователям, заказу, продуктам), с помощью `morphtomany 'позволяет гибко связывать эти этикетки с любым типом модели.

** 4. Роли пользователя или разрешения по нескольким типам пользователей
В приложениях с несколькими типами пользователей (например, администратором, клиентом, поставщиком) роли или разрешения могут быть назначены полиморфически с использованием «Morphtomany», так что роли управляются в одной таблице, но связаны с различными моделями пользователей [1].

** 5. Связывание комментариев или вложений с несколькими моделями во многих ко многим образом
В то время как комментарии часто являются полиморфными от одного ко многим, могут быть сценарии, в которых несколько комментариев или вложений связаны с несколькими моделями много-ко многим образом. `morphtomany можно использовать для моделирования таких отношений.

Как работает `morphtomany

- Он использует одну таблицу Pivot, например, `Taggables`, с столбцами для` Tag_id`, `Taggable_id` и` Taggable_type`.
- столбцы `taggable_id` и` taggable_type` позволяют Laravel определить, с какой моделью связана тег.
- На связанных моделях (например, `post`,` wideo`) вы определяете метод, который возвращает `$ this-> morphtomany (Tag :: class, 'Taggable')`.
- На модели «Tag» вы определяете обратные отношения, используя `morphedbymany`, чтобы получить все модели данного типа, связанного с этим тегом [1] [5].

Краткое содержание

`morphtomany 'идеально подходит, когда вы хотите связать несколько моделей с общей моделью в полиморфном стиле многих ко многим. Он широко используется для систем тегов, категоризации, назначения ролей по нескольким типам пользователей и любого сценария, когда многие различные модели имеют общий набор связанных моделей без необходимости отдельных таблиц поворота для каждой пары.

Этот подход упрощает проектирование базы данных и поддержание кода путем централизации полиморфных отношений от многих ко многим в единую элегантную структуру.

Цитаты:
[1] https://blog.logrocket.com/polymorphic-relationships-laravel/
[2] https://laraveldaily.com/post/polymorphic-realations-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-trough
[5] https://laravel.com/docs/11.x/eloquent-relationships
[6] https://www.linkedin.com/pulse/complete-guide-polymorphic-crolationships-morphs-sajith-madhubashana-rk1xc
[7] https://joedixon.co.uk/a-practical-use-case-for-laravels-polymorphic-relationships
[8] https://stackoverflow.com/questions/58811999/what-are-the-uses-of-morphs-column-type-in-laravel
[9] https://laraveldaily.com/post/laravel-polymorphic-many-t-many-get-all-связанные с рекорды