猿问

Laravel 5.0 尝试从“未定义属性”集合中获取项目

我有一个看起来像这样的集合:


Collection {#322 ▼

  #items: array:2 [▼

    "title" => array:1 [▼

      0 => {#356 ▼

        +"id": 104

        +"block_newsletter_id": 135

        +"item_type": "title"

        +"html_key": ""

        +"content": "aze"

        +"properties": ""

      }

    ]

    "text" => array:1 [▼

      0 => {#357 ▼

        +"id": 105

        +"block_newsletter_id": 135

        +"item_type": "text"

        +"html_key": ""

        +"content": "azee"

        +"properties": ""

      }

    ]

  ]

}

我像这样构建了这个集合:


collect($blockItemsContent[$block->pivot->id])->groupBy('item_type')

我将此集合发送到我的视图,并尝试像这样访问标题的内容:


{{ $blockItemsContent->title->content }}

我收到以下错误:


未定义的属性:Illuminate\Support\Collection::$title


我也试过这个:


{{ $blockItemsContent['title']->content }}

这给了我以下错误:


试图获取非对象的属性


编辑我在刀片中尝试的内容

<td style="background-color: #ffffff;">

    <table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%">

        <tbody>

            <tr>

                <td style="padding: 20px; font-family: sans-serif; font-size: 15px; line-height: 20px; color: #555555;">

                    <h1 style="margin: 0 0 10px; font-size: 25px; line-height: 30px; color: #0069b4; font-weight: normal;">

                        {{ $blockItemsContent->title->content }}

                    </h1>

                    <p style="margin: 0 0 10px;">

                        {{ $blockItemsContent->text->content }}

                    </p>

                </td>

            </tr>

        </tbody>

    </table>

</td>


萧十郎
浏览 145回答 3
3回答

慕的地8271018

您可以在您的应用程序中使用此代码:foreach ($blockItemsContent as $key=>$value){&nbsp; &nbsp; &nbsp; &nbsp;dd($value->content);&nbsp; &nbsp; }

慕慕森

那是因为$blockItemsContent它包含按item_type您在代码中指定的项目列表分组的集合,如下所示collect($blockItemsContent[$block->pivot->id])->groupBy('item_type')因为它是一个集合,所以您必须先执行循环才能访问每个项目的标题。@foreach($blockItemsContent as $item_key => $item_value)&nbsp; &nbsp; // Notice that $item-key will contains respectively 'title' and 'text'&nbsp; &nbsp; {{ $item_key }} // title or text&nbsp; &nbsp; {{ $item_value['content'] }}@endfor注意,$item_value是阵列中,当$item_key对标题, $item_value将等于$item_value = [ "id" => 105,&nbsp;&nbsp; &nbsp; "block_newsletter_id"=> 135,&nbsp;&nbsp; &nbsp; "item_type" => "text",&nbsp;&nbsp; &nbsp; "html_key"=> "",&nbsp; &nbsp; "content"=> "azee",&nbsp; &nbsp; "properties" => ""]

眼眸繁星

您的集合$blockItemsContent是一个对象数组,而不是对象本身。所以你应该通过$blockItemsContent->get("title"). 这又是一个数组,您可以使用 foreach 循环。foreach($blockItemsContent->get("title") as $obj) {&nbsp; dump($obj);}或者:$blockItemsContent->get("title")->each(function($obj) {&nbsp; dump($obj);});编辑:请记住,如果未找到密钥,则->get("title")返回NULL如果你不知道什么值item_type是可能的,你应该遍历整个集合
随时随地看视频慕课网APP
我要回答