如何更改 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');
}
我正在为 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');
}