Почему моя коллекция пуста, когда я ее отправляю? - PullRequest
0 голосов
/ 04 мая 2018

Я работаю с Laravel 5, и у меня в контроллере есть следующий метод:

/**
 * Display the specified resource.
 *
 * @param  int $id
 * @return \Illuminate\Http\Response
 */
public function show($id)
{
    $authUser =  Auth::user();
    $sharesList = Group::find($id)->shares->sortByDesc('created_at');
    $groupList = $authUser->groupsAsMember->where('id', '<>', $id);
    $group = $authUser->groups->find($id);
    $postList = Group::find($id)->posted->sortByDesc('created_at');

    $postsGroups = PostGroup::where('group_id', $id)->with('commented')->get();
    //$commentsList;

    foreach ($postsGroups as $postGroup) {
        $commentsList = $postGroup->commented;
        //dd($commentsList);
    }

    //dd($commentsList);
    return view('Pages.Group.detail', ['sharesList' => $sharesList, 'groupList' => $groupList, 'theGroup' => $group, 'postList' => $postList, 'commentsList' => $commentsList]);
}

Проблема в коллекции $commentsList, если я помещу dd($commentsList) внутри @foreach, я вижу, что внутри него есть элементы, которые я хочу, но если я поставлю dd($commentsList) вне foreach (после @endforeach) $ commentsList пуст, и он приходит пустым на мою HTML-страницу, как мне решить? Я пытался поместить $commentsList; перед циклом @foreach, но все еще не работает.

EDIT

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Как вы упомянули в комментариях, вам нужна коллекция массивов, поэтому сначала инициализируйте список комментариев:

$commentsList = [];

А потом:

foreach ($postsGroups as $postGroup) {
    $commentsList[] = $postGroup->commented;
}
0 голосов
/ 04 мая 2018

Вы перезаписываете его каждым циклом, в то время как вы должны добавить новый элемент массива. Попробуйте это:

/**
 * Display the specified resource.
 *
 * @param  int $id
 * @return \Illuminate\Http\Response
 */
public function show($id)
{
    $authUser =  Auth::user();
    $sharesList = Group::find($id)->shares->sortByDesc('created_at');
    $groupList = $authUser->groupsAsMember->where('id', '<>', $id);
    $group = $authUser->groups->find($id);
    $postList = Group::find($id)->posted->sortByDesc('created_at');
    $commentsList = collect();

    $postsGroups = PostGroup::where('group_id', $id)->with('commented')->get();

    foreach ($postsGroups as $postGroup) {
        foreach($postGroup->commented as $commentPost) {
            $commentsList->push($commentPost);
        }
    }

    //dd($commentsList);
    return view('Pages.Group.detail', ['sharesList' => $sharesList, 'groupList' => $groupList, 'theGroup' => $group, 'postList' => $postList, 'commentsList' => $commentsList]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...