Foreach循环仅返回laravel中查询的最新结果

时间:2019-10-15 12:23:04

标签: php database laravel loops foreach

我想遍历一个集合并对该集合的每个项目进行查询,但是foreach循环仅返回最新结果。我该如何解决这个问题?

foreach ($conversations as $conversation) {

    if ($conversation->id_participant1 !== Auth::user()->id) {

        $users = User::where(function ($query) use ($conversation) {
            $query->where('id', $conversation->id_participant1);
        })
            ->get();
    } else {
        $users = User::where(function ($query) use ($conversation) {
            $query->where('id', $conversation->id_participant2);
        })
            ->get();
    }
}

1 个答案:

答案 0 :(得分:5)

您在每个循环$ user变量中都覆盖了 您可以在foreach顶部创建一个空数组,并将用户推送到该变量

$users = []
foreach ($conversations as $conversation) {

if ($conversation->id_participant1 !== Auth::user()->id) {

    $users[] = User::where(function ($query) use ($conversation) {
        $query->where('id', $conversation->id_participant1);
    })
        ->get();
} else {
    $users[] = User::where(function ($query) use ($conversation) {
        $query->where('id', $conversation->id_participant2);
    })
        ->get();
    }
}
相关问题