2016-10-19 11 views
0

Ich habe eine kurze Frage, wie die unten stehende Beziehung definierenLaravel viele zu vielen Polymorphe Beziehungen

Ich habe ein USER, die viele Councils, Viele Schools und viele Businesses gehören.

Jetzt weiß ich, dass ich eine Pivot-Tabelle für alle oben so etwas wie

council_user 
school_user 
business_user 

haben Dieses bedeutet, dass ich aus dem DB ziehen können alle councils ein user gehört, alle businesses etc

zu rette mich dies zu tun gibt es einen besseren Ansatz, mit 3 pivot tables, könnte ich viele zu viele polymorphe Beziehungen und tun es so, wenn ja jemand weiß, wie das würde als eine Tabellenstruktur aussehen?

Ich fühle es so etwas wie wäre ...

business 
id - integer 
name - string 

council 
id - integer 
name - string 

school 
id - integer 
name - string 

userables 
user_id - integer 
userable_id - integer 
userable_type - string 

Wenn so entferne ich die userable_is und userable_type aus meiner USER Tabelle und habe diesen zusätzlichen userables Tisch?

Weiß jemand, wie das funktioniert, habe ich völlig falsch verstanden, was polymorphe Beziehungen tun?

Antwort

0

In der polymorphen Beziehung "Viele zu viele" sollten Sie die userables-Tabelle zusammen mit der users-Tabelle verwenden. und und userable_type sollten in der Tabelle userables nicht in der Tabelle users sein.

userables Tabelle:

user_id userable_id userable_type 
1   1    App\Business 
1   2    App\School 
... 

Geschäft, Schule und Rat Modell:

public function users() 
{ 
    return $this->morphToMany('App\User', 'userable'); 
} 

Benutzermodell:

public function businesses() 
{ 
     return $this->morphedByMany('App\User', 'userable'); 
} 

public function schools() 
{ 
     return $this->morphedByMany('App\User', 'userable'); 
} 

public function councils() 
{ 
     return $this->morphedByMany('App\User', 'userable'); 
} 

dann ergibt dies alle Unternehmen der Benutzer mit user_id 1.

$users=User::find(1); 
foreach($user->businesses as $business) 
{ 
    print_r($business->name); 
} 

Siehe Many to many polymorphic relation in doc.

Verwandte Themen