我已经花了数小时,却找不到解决方法,我有一个查询,该查询获取所有在被请求方或入站部分具有个人资料ID的朋友,并检查其是否获得批准,这部分是否正确,就好像我回显查询,它返回所有正确的行,现在,当我要遍历每一行并在数据库中搜索与好友表中被请求者ID或入站ID相关的用户时,当前它仅循环一次,我在循环$rowsget
和$temp1
时都知道这一点,而$temp1
中的用户名仅与$rowsget
的第一行相关。我的头快要爆炸了,任何帮助都将不胜感激。
查询
$rowsget = DB::table('friends')
->where( function(Builder $query) use($uid) {
$query->where('requesteeid', $uid)
->orWhere('inboundid', $uid);
})
->where('approved', true)
->get(['requesteeid', 'inboundid']);
if(count($rowsget) > 0){
foreach($rowsget as $get) {
$temp1 = DB::table('users')
->where('id', $get->requesteeid)
->orWhere('id', $get->inboundid)
->get(['username']);
}
//Echoing data (just test )
echo $temp1;
echo $rowsget;
}
结果(用户名是前两个ID的结果)
[{"username":"Max11"},{"username":"bob11"}]
[{"requesteeid":4,"inboundid":1},{"requesteeid":4,"inboundid":2}]
答案 0 :(得分:2)
您正在覆盖$temp1
中的条目,并在循环外打印它,因此它将始终为您提供最后一个条目。
将其制成一个数组以包含所有条目:
$temp1 = [];
if(count($rowsget) > 0){
foreach($rowsget as $get) {
$temp1[] = DB::table('users')->where('id', $get->requesteeid)-
>orWhere('id', $get->inboundid)->get(['username']);
}
print_r($temp1);
答案 1 :(得分:0)
只需解决此问题
foreach($rowsget as $get) {
$temp1 = DB::table('users')->where('id', $get->requesteeid)->orWhere('id',
$get->inboundid)->get(['id', 'username', 'avatar']);
foreach ($temp1 as $key) {
if($key->id != $uid) {
echo $key->username;
}
}