为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
萧十郎 2021-06-27 12:39:17
我有一个看起来像这样的集合: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>
查看完整描述

3 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

您可以在您的应用程序中使用此代码:


foreach ($blockItemsContent as $key=>$value){

       dd($value->content);

    }


查看完整回答
反对 回复 2021-07-02
?
慕慕森

TA贡献1856条经验 获得超17个赞

那是因为$blockItemsContent它包含按item_type您在代码中指定的项目列表分组的集合,如下所示


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

因为它是一个集合,所以您必须先执行循环才能访问每个项目的标题。


@foreach($blockItemsContent as $item_key => $item_value)


    // Notice that $item-key will contains respectively 'title' and 'text'


    {{ $item_key }} // title or text


    {{ $item_value['content'] }}


@endfor

注意,$item_value是阵列中,当$item_key对标题, $item_value将等于


$item_value = [ "id" => 105, 

    "block_newsletter_id"=> 135, 

    "item_type" => "text", 

    "html_key"=> "",

    "content"=> "azee",

    "properties" => ""

]


查看完整回答
反对 回复 2021-07-02
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

您的集合$blockItemsContent是一个对象数组,而不是对象本身。所以你应该通过$blockItemsContent->get("title"). 这又是一个数组,您可以使用 foreach 循环。


foreach($blockItemsContent->get("title") as $obj) {

  dump($obj);

}

或者:


$blockItemsContent->get("title")->each(function($obj) {

  dump($obj);

});

编辑:


请记住,如果未找到密钥,则->get("title")返回NULL

如果你不知道什么值item_type是可能的,你应该遍历整个集合


查看完整回答
反对 回复 2021-07-02
  • 3 回答
  • 0 关注
  • 144 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信