Отображение данных о блейд-представлении из базы данных Laravel Уведомления - PullRequest
2 голосов
/ 13 апреля 2020

Я новичок в работе laravel. Я столкнулся с проблемой, когда пытаюсь отобразить данные на веб-сайте с помощью уведомления laravel. Это мой код:

GameBiddedNotification. php:

public function toDatabase($notifiable)
{
    return[
        'title' => $this->details['title'],
        'text' => $this->details['text']
    ];
}

Это шаблон базы данных в столбце данных:

{"title":"hg","text":"\u10db\u10dd\u10d7\u10d0\u10db\u10d0\u10e8\u10d4 \u10e8\u10d4\u10db\u10dd\u10d5\u10d8\u10d3\u10d0"}

И это мой блейд:

                  @foreach(auth()->user()->unreadNotifications as $notification)
              @php
              $data = json_decode($notification,true);
              $test = $data['title'] ['text'];
              @endphp

              <a class="dropdown-item preview-item">
                <div class="preview-thumbnail">
                  <div class="preview-icon bg-dark rounded-circle">
                    <i class="mdi mdi-xbox-controller text-success"></i>
                  </div>
                </div>
                <div class="preview-item-content">
                  {{-- <p class="preview-subject mb-1">{{ $notification->data['title'] }}</p> --}}
                  <p class="text-muted ellipsis mb-0">{{ $test }}</p>
                </div>
              </a>
              @endforeach

Я пробовал несколько методов, например:

{{ $notification->data['title'] }}

, но результат тот же. Я всегда получаю сообщение об ошибке

ErrorException (E_ERROR)
Undefined index: title

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020

Если вы правильно настроили $casts в модели уведомлений для приведения столбца данных в качестве массива, нет необходимости использовать json_decode для блейда.

$casts = [ 'data' => 'array' ];

Что делает как выглядит ваша модель?

Кстати: вам вообще следует избегать @php - она ​​обычно указывает на код, принадлежащий контроллеру. Я полагаю, это код только для тестирования? Вместо этого лучше dd($notification); проверить атрибут данных.

0 голосов
/ 13 апреля 2020

Исходя из вашего вопроса, заголовок и текст хранятся в столбце «данные»,

   @foreach(auth()->user()->unreadNotifications as $notification) 
        <a class="dropdown-item preview-item">
            <div class="preview-thumbnail">
                <div class="preview-icon bg-dark rounded-circle">
                    <i class="mdi mdi-xbox-controller text-success"></i>
                </div>
            </div>
            <div class="preview-item-content">
                <p class="preview-subject mb-1">{{ $notification->data['title'] }}</p>
                <p class="text-muted ellipsis mb-0">{{ $notification->data['text'] }}</p>
            </div>
        </a>
    @endforeach
...