2

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

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

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

Laravel文档指出:

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

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

4

2 回答 2

5

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

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

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

这现在按升序打印数据。

于 2017-06-25T15:35:44.803 回答
4

只是解决这个问题:通过遵循 Notifiable trait,我发现该关系已分配给它。

您可以在模型中覆盖它:

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');
}
于 2018-05-01T11:15:07.553 回答