2017-06-22 9 views
0

Ich versuche zum ersten Mal die viel zu viele polymorphe Beziehung in Laravel zu verwenden. Im docs für sie, für die DB-Struktur heißt es:Laravel - Viele zu viele polymorphe Beziehungen

taggables 
    tag_id - integer 
    taggable_id - integer 
    taggable_type - string 

Was ich frage mich, ist das, was ist der Unterschied zwischen dem tag_id und dem taggable_id, was wir in jeder lagern?

Antwort

1

eine many-to-many polymorphe Beziehung ermöglicht es Ihnen, eine einzelne Liste der einzigartigen Tags zu haben, die über Blog-Posts und Videos geteilt sind.

Nachdem gelesen, dass ich taggable_id Referenzen entweder posts.id oder videos.id, als „markierbare“ Entitäten sagen würde. Dann beantwortet der taggable_type die Frage - ist das taggable_id ein Video oder ein Beitrag?

Volltabellenstruktur zur besseren Visualisierung:

posts 
    id - integer 
    name - string 

videos 
    id - integer 
    name - string 

tags 
    id - integer 
    name - string 

taggables 
    tag_id - integer 
    taggable_id - integer 
    taggable_type - string 

Beispiel:

Beiträge

+----+-----------+ 
| id | name  | 
+----+-----------+ 
| 12 | test post | 
+----+-----------+ 

Videos

Tags

+----+--------------+ 
| id | name   | 
+----+--------------+ 
| 88 | programming | 
+----+--------------+ 

taggables

+--------+-------------+---------------+ 
| tag_id | taggable_id | taggable_type | 
+--------+-------------+---------------+ 
| 88  | 12   | post   | 
+--------+-------------+---------------+ 
| 88  | 5   | video   | 
+--------+-------------+---------------+ 
+0

Ja, aber was tag_id ist dann? – Leff

+0

Nun, genau, was es sagt: die ID des Tags, aus der 'Tags' Tabelle. Auch hier kann ein einzelnes Tag über Posts und Videos hinweg * geteilt * werden. – lesssugar

Verwandte Themen