2017-01-27 23 views
1

私はUserProjectモデルを持っています。Laravel 5.4:多対多ピボットテーブルレコード

関係は多岐にわたります。

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

そして、私が持っているProjectモデルで:

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

今、私がやっている何を:

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

を私が欲しいもののusersテーブルからusernameを取得することですユーザー、プロジェクトを投稿した人Projectの意味はprojectsです。forign_key - >employeer_idです。

現在$project->pivot->usernameは私にエラーが発生します。

pivotテーブル名はproject_userです。

私には何が欠けていますか?

答えて

0

$project->pivot->usernameは、ピボットテーブルにusernameフィールドが必要です。 ->withPivot('id');は、ピボットテーブルのid列を取得する場合にのみ必要です。値は$project->pivot->idです。

ユーザテーブルからユーザ名を取得する場合は、ピボットを必要としません。

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

はい、私はそれを行うことができます(あなたが主キーで選択したい場合)が、私はあまりにも、プロジェクトのオブジェクトが必要です! – Gammer

+0

@Gamer '$ projectsAsFreelancer'はオブジェクトのコレクションを与え、foreach内の' $ project'はオブジェクトを与えます。 –

+0

このオブジェクトにはforeachがforeachでforeachを意味することを再度必要としますか? – Gammer

0

get()を使用しないでください。それは関係をフェッチすることができませんでした。あなたは使うことができfirst()またはfind()

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

はい、私はそれを行うことができますが、私もプロジェクトオブジェクトが必要です! – Gammer