Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Laravel의 Morphtomany의 일반적인 사용 사례는 무엇입니까?


Laravel의 Morphtomany의 일반적인 사용 사례는 무엇입니까?


Laravel의 'Morphtomany'관계는 다수의 다형성 관계를 정의하는 데 사용되며, 다중 모델이 다형성 중간 테이블을 통해 단일 모델 유형과 관계를 공유 할 수 있습니다. 이를 통해 각 모델 쌍에 대해 별도의 피벗 테이블이 필요하지 않고 많은 다른 모델을 공통 모델과 유연하게 연결할 수 있습니다.

Laravel의 'Morphtomany'에 대한 일반적인 사용 사례

** 1. 태깅 시스템
가장 일반적인 사용 사례 중 하나는 여러 다른 모델 (예 : 게시물, 비디오, 페이지)에 동일한 태그로 태그를 붙일 수있는 태깅 시스템을 구현하는 것입니다. 각 모델 태그 관계에 대해 별도의 피벗 테이블을 갖는 대신`morphtomany '는 모든 태그를 단일'태그 '테이블에 저장하고 모든 모델과 다형성으로 저장할 수 있습니다.
예를 들어,`post`와`video '모델 모두`morphtomany'를 사용하여 태그를 검색하는 데`tags ()`메소드를 가질 수 있으며,`tag '모델은`morphedbymany'를 사용하여 모든 게시물이나 비디오를 태그로 가져올 수 있습니다 [1] [5] [9].

** 2. 다양한 컨텐츠 유형을 분류합니다
태그와 유사하게 다른 컨텐츠 유형에서 범주를 공유 할 수 있습니다. 예를 들어, 기사와 제품을 모두 분류해야 할 수도 있으며 다형성 다수의 관계를 통해 중복 테이블없이 카테고리를 공유 할 수 있습니다.

** 3. 여러 모델에 레이블 또는 속성을 할당합니다
`morphtomany`를 사용하여 다른 모델 (예 : 사용자, 주문, 제품)에 적용 할 수있는 레이블, 속성 또는 기능이있는 경우 이러한 라벨을 모든 모델 유형과 유연하게 연결할 수 있습니다.

** 4. 여러 사용자 유형의 사용자 역할 또는 권한
여러 사용자 유형 (예 : 관리자, 고객, 공급 업체)이있는 응용 프로그램에서는 단일 테이블에서 역할을 관리하지만 다른 사용자 모델과 관련된 역할을 'Morphtomany'를 사용하여 역할 또는 권한을 다형성으로 할당 할 수 있습니다 [1].

** 5. 댓글 또는 첨부 파일을 다수의 방식으로 여러 모델에 연결
주석은 종종 일대일 다형성이지만 여러 댓글이나 첨부 파일이 다수의 방식으로 여러 모델과 관련된 시나리오가있을 수 있습니다. `Morphtomany`는 그러한 관계를 모델링하는 데 사용될 수 있습니다.

어떻게 'Morphtomany'가 작동 하는가

-`tag_id`,`taggable_id` 및`taggable_type`에 대한 열이있는 단일 피벗 테이블 (예 :`taggables ')을 사용합니다.
-`taggable_id` 및`taggable_type` 열을 통해 Laravel은 태그가 관련된 모델을 결정할 수 있습니다.
- 관련 모델 (예 :`post`,`video ')에서`$ this-> morphtomany (tag :: class,'taggable ')`을 반환하는 메소드를 정의합니다.
-`tag '모델에서, 당신은'morphedbymany '를 사용하여 역 관계를 정의하여 해당 태그와 관련된 주어진 유형의 모든 모델을 검색합니다 [1] [5].

요약

`Morphtomany`는 여러 모델을 일반적인 다형성 방식으로 공통 모델과 연결하려는 경우 이상적입니다. 태깅 시스템, 분류, 여러 사용자 유형에 따른 역할 할당 및 각 쌍에 대해 별도의 피벗 테이블없이 공통 관련 모델 세트를 공유하는 모든 시나리오에 널리 사용됩니다.

이 접근법은 다형성 다수의 관계를 단일의 우아한 구조로 중앙 집중화하여 데이터베이스 설계 및 코드 유지 보수를 단순화합니다.

인용 :
[1] https://blog.logrocket.com/polymorphic-relationships-laravel/
[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-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-case-for-laravels-polymorphic-relationships
[8] https://stackoverflow.com/questions/58811999/what-are-the-uses-of-dorphs-type-in-laravel
[9] https://laraveldaily.com/post/laravel-polymorphic-many-to-many-get-all-records