嗨,我想问一下我的代码中有2个orderBy
的通知,但它就是不工作,看起来它的2个顺序有冲突,有什么解决办法吗?
我想显示通知,例如,第一个未读通知,第二个已读通知,按最新created_at
排序
<?php
namespace Illuminate\Notifications;
trait HasDatabaseNotifications
{
/**
* Get the entity's notifications.
*
* @return \Illuminate\Database\Eloquent\Relations\MorphMany
*/
public function notifications()
{
return $this->morphMany(DatabaseNotification::class, 'notifiable')
->orderBy('read_at', 'asc') //order by unread , unread display first
->orderBy('created_at', 'desc') //latest record display first based on created_at
;
}
默认情况下,laravel顺序通知基于created_at desc
,因此我添加了orderBy('read_at', 'asc')
,此命令将首先排序未读通知,但已读通知不是->orderBy('created_at', 'desc')
,因此每当我将其放在第一位时,它将在上面的示例中执行未读通知将显示在第一位,如果我将其放在第二位,则不工作
->orderBy('created_at', 'desc')
->orderBy('read_at', 'asc')
未读通知顺序是不工作,但->orderBy('created_at', 'desc')
这工程。有任何其他周转这一点?我想第一次由未读第二次由最新的顺序阅读谢谢
如何检索内部控制器
$notifications = $user->notifications ;
我试着收集,但失败了
2条答案
按热度按时间rwqw0loc1#
正如您所指出的,Laravel在
notifications
关系中应用了一个order by
子句,该子句来自Illuminate\Notifications\HasDatabaseNotifications
。但是您可以根据需要改写和调整。例如:在用户模型中:
j91ykkif2#
您可以使用
reorder()
删除任何已设置的orderBy:reorder方法允许您删除所有现有订单,并可以选择应用新订单。