2016-04-19 2 views
0

Ich habe Probleme, eine Beziehung zwischen Tabellen einzurichten.Wie kann ich mehrere beredte Beziehungen bekommen?

- courses 
    |- id 
    |- title 
- sessions 
    |- id 
    |- course_id 
    |- title 
- users 
    |-id 
    |- name 
- user_roles 
    |- user_id 
    |- course_id 

Ich kann alle Sitzungen für einen bestimmten Kurs und alle Benutzer anzeigen, die für eine bestimmte Sitzung registriert sind. Ich möchte auch die Rolle des Benutzers zeigen. Da ich für einen beliebigen Kurs eine beliebige Anzahl von Sitzungen haben kann, verfügt meine Pivot-Tabelle nur über die Spalten course_id und user_id.

Wenn ich eine URL wie folgt besuchen: mysite.com/sessions/1 Ich möchte die aktuellen Benutzer für die Sitzung zeigen. Es würde wie folgt aussehen:

"My Course" 
    "Session One" 
     "John Doe" 
      "Admin" 
     "Jane Doe" 
      "Editor" 
      "Contributor" 
     "Name" 
      "Foo" 

Von CodeIgniter, würde ich im Laufe ID und Benutzer-ID übergeben Sie einfach die entsprechenden Rollen zu finden. Hier ist, was ich habe, dass 90% arbeiten.

Course.php

public function sessions() 
{ 
    return $this->hasMany(Session::class); 
} 

Session.php

public function course() 
{ 
    return $this->belongsTo(Course::class); 
} 

User.php

public function user() 
{ 
    return $this->belongsTo(Course::class); 
} 

public function roles() 
{ 
    return $this->hasMany(Role::class); 
} 

Role.php

public function user() 
{ 
    return $this->belongsToMany(User::class, 'user_roles'); 
} 

Antwort

0

Hier ist die Probe Beziehung

Courses.php

//means course has many sessions 
public function sessions(){ 
    return $this->hasMany('App\Sessions','course_id', 'id'); 
} 

//course user 
public function course_user(){ 
    return $this->belongsToMany('App\Course', 'user_roles', 'user_id', 'course_id'); 
} 

sessions.php

//means Session belongs to course 
public function sessions(){ 
    return $this->belongsTo('App\Course','course_id', 'id'); 
} 

User.php

public function sessions(){ 
    return $this->belongsTo('App\Course','course_id', 'id'); 
} 
//user courses 
public function user_course(){ 
    return $this->belongsToMany('App\User','user_roles','courses_id', 'user_id'); 
} 

Hinweis: Wenn Sie Benutzerrolle-Management-System wollen, dann ist es besser zu installieren und das Zizaco Entrust-Paket zu konfigurieren, ist es viel besser, anstatt sie manuell zu tun. Entrust Package