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

Kev*_*ndo 0 php database foreach loops laravel

我想遍历一个集合并对该集合的每个项目进行查询,但是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();
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 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();
    }
}
Run Code Online (Sandbox Code Playgroud)