Php 从两个表中选择Laravel 5
我使用Laravels多对多关系。我有两个表Php 从两个表中选择Laravel 5,php,mysql,laravel-5,Php,Mysql,Laravel 5,我使用Laravels多对多关系。我有两个表projects和group和pivot表project\u group 现在我可以这样做: $groups = \App\Project::findOrFail(Auth::user() -> id)->groups()->where('adminid','=',Auth::user()->id)->get(); Design(Project2,Project3) SEO(Porject1) 它将只返回组…如下所示:
projects
和group
和pivot表project\u group
现在我可以这样做:
$groups = \App\Project::findOrFail(Auth::user() -> id)->groups()->where('adminid','=',Auth::user()->id)->get();
Design(Project2,Project3)
SEO(Porject1)
它将只返回组…如下所示:
Design
SEO
但我需要像这样返回:
$groups = \App\Project::findOrFail(Auth::user() -> id)->groups()->where('adminid','=',Auth::user()->id)->get();
Design(Project2,Project3)
SEO(Porject1)
所以对于每个循环,我需要得到组和所有链接到该组的项目
以下是我与项目模块的关系:
public function groups(){
return $this ->belongsToMany('App\Group','project_group')->withPivot('admin_id');
}
您可以在组模型中定义关系的倒数
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();
Auth::user()->id
返回当前登录用户的id
。在Laravel5中,有一个中间件可以检查用户是否登录,您可以使用Auth::user()
访问该记录(字段和关系)。