如何更改Laravel Notifications的排序

时间:2017-06-25 00:07:31

标签: php laravel laravel-5 laravel-notification

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

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

这些通知是按降序打印的,有没有办法可以改变它,以便按升序打印?

Laravel documentatio n州:

  

默认情况下,通知将按created_at时间戳

排序

值得一提的是,有多个Notification类已经与此模型一起使用,因此我不确定这是否会影响排序行为?

2 个答案:

答案 0 :(得分:2)

@Peyman Seraj带领我朝着正确的方向前进。

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

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

现在按升序打印数据。

答案 1 :(得分:2)

刚刚解决这个问题: 通过遵循可呈报的特征,我发现该关系已分配给它。

您可以在模型中覆盖它:

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');
}