Laravel 5.4:多对多的数据透视表记录

时间:2017-01-27 11:47:17

标签: php laravel laravel-5 eloquent relationship

我有UserProject型号。

这种关系很多很多。

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();

我想要的是从用户的username表中获取users,谁已发布项目。 Project表示projects表格包含forign_key - > employeer_id

目前$project->pivot->username给了我错误。

pivot表名为project_user

我缺少什么?

2 个答案:

答案 0 :(得分: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;
      }
}

答案 1 :(得分:0)

请勿使用get()。它无法获取关系。您可以使用first()find()(如果您想使用主键选择)

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