2017-01-27 4 views
1

Ich habe User und Project Modelle.Laravel 5.4: Viele zu viele Pivot-Tabelle Datensätze

Die Beziehung ist viele zu viele.

public function projects() 
{ 
    return $this->belongsToMany('App\Project')->withPivot('id');; 
} 

Und in Project Modell ich habe:

public function users() 
{ 
    return $this->belongsToMany('App\User')->withPivot('id');; 
} 

Nun, was ich tue:

$projectsAsFreelancer = App\Project::where('assignedTo',$id)->get();

Was ich will, ist die username aus der users Tabelle des bekommen Benutzer, die das Projekt gepostet haben. Die Project bedeutet projects Tabelle haben die forign_key ->employeer_id.

Derzeit $project->pivot->username gibt mir einen Fehler.

pivot Tabellenname ist project_user.

Was ich vermisse?

Antwort

0

$project->pivot->username erfordert das Feld username in Ihrer Pivot-Tabelle. ->withPivot('id'); wird nur benötigt, wenn Sie id Spalte der Pivot-Tabelle erhalten möchten, $project->pivot->id wil geben den Wert.

Wenn Sie den Benutzernamen aus der Benutzertabelle abrufen möchten, benötigen Sie keinen Pivot.

$projectsAsFreelancer = App\Project::where('assignedTo',$id)->get(); 
foreach($projectsAsFreelancer as $project) 
{ 
    echo $project->name; 
    foreach($project->users as $user) 
    { 
     echo $user->username; 
     } 
} 
+0

Ja, ich kann das tun, aber ich brauche das Projekt zu Objekt! – Gammer

+0

@Gamer '$ projectsAsFreelancer' gibt die Sammlung von Objekten, und '$ project' in foreach gibt Ihnen ein Objekt. –

+0

Damit dieses Objekt wieder eine 'foreach' benötigt, bedeutet foreach in foreach? – Gammer

0

Verwenden Sie nicht get(). Es konnte die Beziehungen nicht abrufen. Sie könnten first() oder find() verwenden (wenn Sie mit Primärschlüssel auswählen möchten)

$projectsAsFreelancer = App\Project::where('assignedTo',$id)->first(); 
foreach ($projectsAsFreelancer->users as $user) { 
    //var_dump($user->username); 
} 
+0

Ja, ich kann das, aber ich brauche auch das Projektobjekt! – Gammer