#laravel #laravel-6
#laravel #laravel-6
Вопрос:
итак, я получил этот код от контроллеров, маршрутов и внутри app.blade.view: контроллеры :
public function showNotif(){
$dataNotif= Notification::get();
// dd($dataNotif);
return view('/',compact('dataNotif'));
}
Маршруты :
Route::get('/','homeController@showNotif');
и внутри app.blade.view я получил эти коды внутри интерактивных значков колокольчиков, которые показывают уведомления:
@if(isset($dataNotif))
@foreach($dataNotif as $dn)
<a href="#" class="dropdown-item dropdown-item-unread">
<div class="dropdown-item-desc">
<p>{{$dn->notifikasi}}</p>
</div>
</a>
@endforeach
@else
<a href="#" class="dropdown-item dropdown-item-unread">
<div class="dropdown-item-desc">
<p>No Notifications!</p>
</div>
</a>
@endif
когда я пытался просто использовать метод foreach внутри app.blade.view, но он всегда показывал «неопределенную переменную» при ошибке $ dataNotif, но когда я сначала использую isset, данные не отображаются, при открытии основного веб-сайта должно отображаться 2 уведомления…
итак, есть ли какое-либо ошибочное исключение или незначительные ошибки, которые я допустил?
спасибо за ответ..
Комментарии:
1. что вы получили за
dd($dataNotif);
?
Ответ №1:
Может помочь, если мы не знаем, как выглядит ваш класс уведомлений, и в последний раз я проверял, что доступ к данным в уведомлении осуществляется через $notification->data['notifikasi']
, предполагая, что ваш класс уведомлений выглядит следующим образом:
/**
* Get the array representation of the notification.
*
* @param mixed $notifiable
* @return array
*/
public function toArray($notifiable)
{
return [
'notifikasi' => 'lorem ipsum'
];
}
Комментарии:
1. о, небольшая информация, я не использую какой-либо метод «уведомления» в laravel, я просто выполняю миграцию и моделирую, чтобы иметь простое уведомление… поэтому я боюсь, что я не настолько разбираюсь в этом классе, хотя…
2. Если это так, попробуйте использовать
all()
вместоget()
.
Ответ №2:
Если уведомление поддерживает хранение в таблице базы данных, вы должны определить toDatabase
метод в классе уведомлений. Этот метод получит $notifiable
объект и должен вернуть простой массив PHP. Возвращенный массив будет закодирован как JSON и сохранен в data
столбце вашей notifications
таблицы. Давайте рассмотрим пример toDatabase
метода:
/**
* Get the array representation of the notification.
*
* @param mixed $notifiable
* @return array
*/
public function toDatabase($notifiable)
{
return [
'invoice_id' => $this->invoice->id,
'amount' => $this->invoice->amount,
];
}
Доступ к уведомлениям
После того, как уведомления сохранены в базе данных, вам нужен удобный способ доступа к ним из ваших уведомляемых объектов. IlluminateNotificationsNotifiable
Признак, который включен в AppUser
модель Laravel по умолчанию, включает в себя notifications
связь Eloquent, которая возвращает уведомления для объекта. Для получения уведомлений вы можете использовать этот метод, как и любое другое отношение Eloquent. По умолчанию уведомления будут отсортированы по created_at
метке времени:
$user = AppUser::find(1);
foreach ($user->notifications as $notification) {
echo $notification->type;
}