0

ich auf einem Untertitel bot ich arbeiten, wo:assoziative Tabelle für OneToMany Beziehung

  • Ein Film mehrere Untertitel (je nach Qualität und Sprache)

  • A-Serie verfügt über mehrere Jahreszeiten mit mehreren Episoden hat die haben mehrere Untertitel (wie bei einem Film)

sind meine Tabellen (Dank DaveRandom) sind:

enter image description here

Das Problem ist, soweit ich weiß, assoziative Tabellen sind für viele-zu-viele-Beziehungen (korrigiert mich wenn ich falsch liege), ich bin ein bisschen hier stecken, vor allem mit Eloquent der belongsToMany Methode:

class Subtitle extends Model { 
    public $guarded = []; 
    public $timestamps = false; 


    public function SeriesEpisodes() 
    { 
     return $this->belongsToMany('SeriesEpisode', null, null, 'series_episodes_subtitle'); 
    } 


    public function Movie() 
    { 
     return $this->belongsToMany('Movie'); 
    } 
} 

Aber das Problem ist, ein Untertitel belongsToOne Folge, während eine Folge viele Untertitel haben könnte. Ich frage mich, wie man assoziative Tabellen für eine solche Struktur verwenden könnte. Oder sollte ich die Struktur ändern?

+0

@Barmar das ist hasMany Beziehung, aber das kann nicht mit der aktuellen Struktur erreicht werden. weil Episode und Film nicht am selben Tisch sind. oder ich habe die Konzepte falsch verstanden, ich bin überhaupt nicht gut mit Datenbank –

Antwort

0

Also, was ich versuche, ist möglich, mit polymorphen Beziehungen zu erreichen, 2 assoziative Tabellen werden entfernt und stattdessen zwei Felder werden Untertitel Tabelle hinzugefügt: ex: PARENT_TYPE, PARENT_ID

dann kann ich verwenden:

Untertitel:

class Subtitle extends Model { 
    public $guarded = []; 
    public $timestamps = false; 

    public function Parent() 
    { 
     return $this->morphTo(); 
    } 
} 

series_episodes:

class SeriesEpisode extends Model { 
    public $timestamps = false; 
    public $guarded = []; 
    public function Subtitles() 
    { 
     return $this->morphMany('Subtitle', 'Owner'); 
    } 
} 

Filmen:

class Movie extends Model { 
    public $timestamps = false; 
    public $guarded = []; 
    public function Subtitles() 
    { 
    return $this->morphMany('Subtitle', 'Owner'); 
    } 
} 

Hoffnung es anderen hilft.

Verwandte Themen