如何更改 Laravel 通知的排序

How do you change the sorting of Laravel Notifications

我正在为 Laravel 5 中的模型打印通知:

@foreach ($booking->notifications as $notification)                     
        <div class="message">
            <div class="myMessage">
              <p>{{ $notification->data[0])}}</p>
            </div>
        </div>                      
@endforeach

这些通知是按降序打印的,有什么方法可以更改此设置以便它们按升序打印?

Laravel documentation 状态:

By default, notifications will be sorted by the created_at timestamp

值得一提的是,此模型使用了多个通知 类,所以我不确定这是否会影响排序行为?

@Peyman Seraj 在这里引导我走向正确的方向。

对于 Laravel 集合,您可以使用集合方法,所以我在我的集​​合中使用了 sortBy() 方法:

@foreach ($booking->notifications->sortBy('created_at') as $notification)

现在按升序打印数据。

只是解决问题: 通过遵循 Notifiable 特征,我发现该关系已分配给它的顺序。

您可以在您的模型中覆盖它:

public function notifications()
{
    return $this->morphMany(\Illuminate\Notifications\DatabaseNotification::class, 'notifiable')->orderByRaw('-read_at','DESC')->orderBy('created_at','DESC');
}

在我的例子中,我先去读未读的,然后再去读剩下的。 如果您想在查询中设置排序,只需使用普通关系:

public function notifications()
{
    return $this->morphMany(\Illuminate\Notifications\DatabaseNotification::class, 'notifiable');
}