Цикл Foreach возвращает только последний результат запроса в laravel - PullRequest
0 голосов
/ 15 октября 2019

Я хочу перебрать коллекцию и выполнить запрос для каждого элемента этой коллекции, но цикл 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 Ответ

5 голосов
/ 15 октября 2019

вы перезаписываете в каждом цикле переменную $ 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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...