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