繁体   English   中英

发送时为什么我的收藏品是空的?

[英]Why my collection is empty when I send it?

我正在使用Laravel 5,我在Controller中使用了以下方法:

/**
 * 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集合,如果我在@foreach中放入一个dd($commentsList) ,我可以看到里面有我想要的元素,但是如果我把dd($commentsList)放在foreach之外(之后) @endforeach)$ commentsList为空,它到达我的HTML页面为空,我该如何解决? 我试着把$commentsList; 在@foreach循环之前,但仍然无法正常工作。

编辑

您应该使用每个循环覆盖它,同时应添加新的数组元素。 尝试这个 :

/**
 * 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]);
}

正如您在评论中提到的那样,您需要收集数组,因此首先初始化注释列表:

$commentsList = [];

接着:

foreach ($postsGroups as $postGroup) {
    $commentsList[] = $postGroup->commented;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM