foreach不循环所有数据

时间:2019-01-04 13:16:51

标签: php database laravel

我的第一个查询获取所有包含请求友谊的用户(已验证的用户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
        }
    }
}

2 个答案:

答案 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
        }
    }

我对其进行了测试并可以正常工作。