文字列エラー時に文字列型のオフセットにアクセスできないと表示されるのはなぜですか?

受付中 プログラミング
2024-12-24
hoge
このダンプ dd($post['comments']);は、以下の内容を示しています。
        ^ "[{"key": "o0Gdz1EsxOpOLN", "layout": "comment", "attributes": {"title": "a", "comment": "b"}}]"
        
次に、このデータは次のように変換されます。
        [
             'name' => "comments",
             'data' => [
                 'comments' =>
                 collect($post['comments'])->map(function ($comment) {
                     return [
                         'title' => $comment['attributes']['title'],
                         'message' => $comment['attributes']['message'],
                     ];
                 }),
             ]
         ],
        
しかし、それはエラーを示しています: Cannot access offset of type string on string エラーはここにあるようです: 'title' => $comment['attributes']['title'], 何が問題になるか知っていますか?
回答一覧
commentsjson形式のようです。json_decode配列としてアクセスする前に、追加する必要がある場合があります。
hoge
または、テーブルにcommentsdb列がある場合は、配列に含めることができます。refpostscommentsprotected $casts
hoge
json_decode()データにアクセスするために使用します。
        [
            'name' => "comments",
            'data' => [
                'comments' =>
                    collect(json_decode($post['comments'], true))->map(function ($comment) {
                        return [
                            'title' => $comment['attributes']['title'],
                            'message' => $comment['attributes']['message'],
                        ];
                    }),
            ]
        ],
        
$post['comments']ただし、コンテンツに必要なjsonデータ構造が含まれていることを事前にテストする必要があります。
hoge