laravel 5.3 — отображение данных json из текстового поля mysql в шаблоне блейда

#php #json #notifications #blade #laravel-5.3

#php #json #уведомления #laravel-блейд #laravel-5.3

Вопрос:

У меня есть эти данные в text поле mysql:

 {"message":"New comment from pp on one of your photos.","action":"/photos/9372"}
  

Он записывается в базу данных с помощью этой функции (уведомление laravel):

 public function toArray($notifiable)
{
    return [
        'message' => 'New comment from '.Auth::user()->username.' on one of your photos.',
        'action' => '/photos/'.$this->comment->photo_id
    ];
}
  

В документации говорится:

 "The returned array will be encoded as JSON and stored in the data column of your notifications table."
  

Затем я извлекаю данные следующим образом:

 $notifications = Auth::user()->notifications()->paginate(30);

return view('home.index')->with('notifications',$notifications);
  

Как я могу отобразить содержимое этого json array (?) в представлении блейда? Я могу var_dump() это, но не отображать. Это всегда undefinded index или другие ошибки.

 @forelse($notifications as $n)
    @php
        $data = $n->data;
    @endphp
    {!! var_dump($data) !!}
@empty
    nothing
@endforelse
  

Редактировать

Когда я пытаюсь получить json_decode данные, он сообщает мне, что это массив:

 {!! var_dump(json_decode($data)) !!}

json_decode() expects parameter 1 to be string, array given
  

print_r() говорит то же самое:

 {!! print_r($data) !!}

Array ( [message] => New comment from pp on one of your photos. [action] => /photos/9372 ) 1 
  

var_dump() говорит, что это массив:

 {!! var_dump($data) !!}

array(2) { ["message"]=> string(42) "New comment from pp on one of your photos." ["action"]=> string(12) "/photos/9372" } 
  

Но когда я хочу отобразить определенное значение, оно не работает:

 {!! $data["message"] !!}

Undefined index: message
  

Ответ №1:

Убедитесь, что вы просматриваете массив уведомлений при попытке получить доступ к части массива сообщений:

 @foreach ($notifications as $notification)
    {{ $notification->data['message'] }}
@endforeach