我创建了3个表用户,会议并请求如何获取请求会议的用户?

时间:2017-07-27 12:03:13

标签: php mysql laravel

我创建了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

进行过滤

如何从请求表中有记录的会议页面获取用户?

3 个答案:

答案 0 :(得分:0)

我将假设request_id表中的reuqests作为users表中的外键。

查询应为。

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的结果。

答案 1 :(得分:0)

好的,如果我错了,请纠正我。 您希望从db中检索具有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

答案 2 :(得分:0)

$ requests = App \ Requests :: where(&#39; meeting_id&#39;,3) - &gt; get();

Post.all.                            # SELECT * FROM `posts`
  to_a.                              # <-- executes query, returns the results in an array
  select { |p| p.arr.include?(x) }   # filter array