我正在为Laravel 5中的模型打印通知:
@foreach ($booking->notifications as $notification)
<div class="message">
<div class="myMessage">
<p>{{ $notification->data[0])}}</p>
</div>
</div>
@endforeach
这些通知是按降序打印的,有没有办法可以改变它,以便按升序打印?
默认情况下,通知将按created_at时间戳
排序
值得一提的是,有多个Notification类已经与此模型一起使用,因此我不确定这是否会影响排序行为?
答案 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');
}