2017-07-27 84 views
1

我创建了3个表格:与这两个表格有关的用户,会议和请求,对于页面会议/ 3会议ID为3,我想要显示所有在请求表中提交请求的用户:我创建3级表的用户,会议和要求如何得到谁请求会议的用户?

用户: 用户 ID 名

会议: 会议 ID 名

要求: 请求 ID MEETING_ID REQUEST_ID

$requests = App\Requests::all(); 
          foreach ($requests as $request) 
          { 
           $user = App\User::where('id', $request->user_id)->first(); 
           echo $user->name . '<br>'; 
          } 

这显示了用户而不是由会议ID

如何从会议页那里是在请求表记录用户过滤?

+0

使用[Manu to Many relationship](https://laravel.com/docs/5.4/eloquent-relationships#many-to-many)! – Maraboc

回答

0

好吧,纠正我,如果我错了。 你想从数据库中的所有ID为会议的用户请求检索= 3

与尝试:

$requests = App\Requests::where('meeting_id', 3)->get(); 
foreach($requests as $request){ 
    echo $request->user->name; 
    echo '<br>'; 
} 

,并在您的模型,您应该设置一些关系,如:

您用户模型:

public function requests(){ 
    return $this->hasMany('App\Request'); 
} 
在请求模型

public function user(){ 
    return $this->belongsTo('App\User'); 
} 

你也可以这样做:

$meeting = App\Meeting::find(3); 
$users = $meeting->users; 

这将允许你,如果你设置模型之间的关系,正确,检索直接已提交该次会议的请求用户。

检查laravel的约关系文档:laravel relationships

+0

工作过,但看起来像你很好,请告诉我该怎么做:用户可以创建会议,并且为每个会议页面我想显示申请此会议的用户,在请求表中有一列称为接受1被接受,0不是,所以这工作到目前为止的用户数据:名称,图像等,但我想从请求表中显示接受的列,基本上我想显示所有申请会议的用户和那里的状态如果他们被接受,非常感谢 – Shark

+0

很高兴它的工作。那么,你只需要修改最初的请求就可以应用antoher过滤器,例如: '$ requests = App \ Requests :: where('meeting_id',3) - > where('accepted',1) - > get( );' 这将检索所有的会议id = 3和接受= 1的请求。流程保持不变。 但是,我认为你应该检查有关查询数据库的laravel文档。这是查询生成器死了简单...看看[文档](https://laravel.com/docs/5.4/queries#introduction) – bLuke

+0

这工作!,谢谢 – Shark

0

我会在reuqests表假设request_id从用户表的外键。

查询应该是。

select u.users from users as u inner join requests as r on u.id=r.request_id where r.meeting_id=3; 

此查询连接两个表(usersrequests),并获取给定meeting_id结果。

0

$请求=软件\要求::在哪里( 'MEETING_ID',3) - >获得();

foreach($requests as $request){ 
    echo $request->user->name; 
    echo '<br>'; 
    echo $request->accepted; 
    echo '<br>'; 
}