我创建了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 :(得分: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;
此查询连接两个表(users
和requests
)并获取给定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