0

Je travaille sur un robot sous-titres où:tableau associatif pour la relation OneToMany

  • Un film a plusieurs sous-titres (selon la qualité et la langue)

  • Une série a plusieurs saisons avec plusieurs épisodes qui ont des sous-titres multiples (même comme un film)

ce sont mes tables (Merci à DaveRandom):

enter image description here

Le problème est, pour autant que je sais tables associatives sont pour beaucoup à plusieurs relations (corrigez-moi si je me trompe), je suis un peu coincé ici, surtout avec la méthode belongsToMany de Eloquent:

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'); 
    } 
} 

Mais le problème est, un sous-titre belongsToOne épisode, alors qu'un épisode pourrait avoir de nombreux sous-titres. Je me demandais comment on pouvait utiliser des tables associatives pour une telle structure. Ou devrais-je changer la structure?

+0

@Barmar qui est hasMany relation, mais qui ne peut pas être atteint avec la structure actuelle. parce que l'épisode et le film ne sont pas à la même table. ou j'ai mal compris les concepts, je ne suis pas bon du tout avec la base de données –

Répondre

0

donc ce que je cherche à atteindre est possible avec les relations polymorphes, 2 tables associatives sont supprimés et au lieu de 2 champs sont ajoutés à la table des sous-titres: ex: PARENT_TYPE, PARENT_ID

je peux utiliser:

Sous-titres:

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'); 
    } 
} 

films:

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

il aide les autres à l'espoir.