我的第一个查询获取所有包含请求友谊的用户(已验证的用户ID)和入站友谊(入站用户ID)的所有行。如果我回显$ rowsget,它会回显正确的行,这是可行的,我遇到的问题是它只会循环访问最多两个用户名,一旦我取消了它能够循环访问配置文件自己的用户名的功能,它只会循环经过一行然后停止,我尝试了某些人说过的操作,但是当我尝试加载配置文件页面时,它现在显示此错误消息,“ Illuminate \ Support \ Collection类的对象无法转换为int”是代码,感谢您的帮助,我已经坚持了几个小时。
查询
$rowsget = DB::table('friends')->where(function(Builder $query) use($uid) {
$query->where('requesteeid', $uid)
->orWhere('inboundid', $uid);
})
->where('approved', true)
->get();
$rowfetchfriend = [];
if(count($rowsget) > 0){
foreach($rowsget as $get) {
$getrequestee = $get->requesteeid;
$getinbound = $get->inboundid;
$rowfetchfriend += DB::table('users')->where('id', $getrequestee)-
>orWhere('id', $getinbound)->get(['id', 'avatar', 'username']);
}
通过用户名循环
foreach($rowfetchfriend as $loop) {
if($loop->id != $uid) { //make sure own user isnt displayed
echo $loop->username; // echo all usernames that are
}
}
}
答案 0 :(得分:1)
在添加到数组时使用此方法(或push()方法):
代替此:
$rowfetchfriend += DB::table('users')->where('id', $getrequestee)->orWhere('id', $getinbound)->get(['id', 'avatar', 'username']);
尝试一下:
$rowfetchfriend[] = DB::table('users')->where('id', $getrequestee)->get(['id', 'avatar', 'username']);
$rowfetchfriend[] = DB::table('users')->where('id', $getinbound)->get(['id', 'avatar', 'username']);
该类及其方法在这里列出: https://laravel.com/api/5.5/Illuminate/Support/Collection.html#method_count
答案 1 :(得分:0)
您可以使用laravel集合的“推送”方法。
尝试:
$rowfetchfriend = [];
if(count($rowsget) > 0) {
foreach($rowsget as $get) {
$getrequestee = $get->requesteeid;
$getinbound = $get->inboundid;
$temp = DB::table('users')->where('id', $getrequestee)->orWhere('id', $getinbound)->get(['id', 'avatar', 'username']);
array_push($rowfetchfriend, $temp->toArray());
}
}
并遍历用户名:
for ($i=0; $i < count($rowfetchfriend); $i++) {
if($rowfetchfriend[$i][0]->id != $uid) { //make sure own user isnt displayed
echo $rowfetchfriend[$i][0]->username; // echo all usernames that are
}
}
我对其进行了测试并可以正常工作。