从Laravel 5的两张桌子中选择

时间:2015-04-15 15:31:55

标签: php mysql laravel-5

我使用Laravels的关系很多。我有2个表projectsgroups以及数据透视表project_group

现在我可以这样做:

$groups = \App\Project::findOrFail(Auth::user() -> id)->groups()->where('adminid','=',Auth::user()->id)->get();

它将只返回群组......就像这样:

Design
SEO

但我需要这样回来:

Design(Project2,Project3)
SEO(Porject1)

因此,对于每个循环,我需要将组和所有项目链接到该组。

以下是我与Project modul的关系:

public function groups(){
    return $this ->belongsToMany('App\Group','project_group')->withPivot('admin_id');
    }

1 个答案:

答案 0 :(得分:1)

您可以在群组模型中定义关系的倒数。

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

然后,在您的雄辩查询中使用它。

$groups = Group::with('projects')->get();

您将能够遍历您的小组,并在每个小组中获得所有项目。

foreach($groups as $group) {
  foreach($group->projects as $project){
    //your project
  }
}

我不太了解Auth::user() -> id的使用情况,但如果您只想要当前用户为admin的项目,则可以在with函数中使用条件。

$groups = Group::with(['projects' => function($query) {
  $query->where('adminid', Auth::user()->id)
}])->get();