我正在使用此代码http://codegains.com/2014/06/laravel-4-notification-system/ 对于我的通知系统,它工作正常。但现在我遇到了问题,用户充斥着通知。 我的意思是,如果5个用户喜欢一个图像,该图像的作者将获得5个“User X like your picture image.png”的通知。其中X是5个不同的名字。 现在我想知道是否有人知道如何改变,以便在上面的情况下,用户将只收到1个通知,说“用户X,Y,Z喜欢你的picture image.png”。
编辑: 这是表“通知”的结构 http://codegains.com/wp-content/uploads/2014/06/notifications-2.png
现在我正在尝试对通知进行分组,迭代通过ORDER BY object_id从DB中选择的所有通知,并将当前object_id与之前的对象进行比较,因此我得到了正确的表单。但这需要花费很多时间,因为它会在每个页面加载(主页面)上启动。还有1000个用户,有1000个通知...:\
答案 0 :(得分:1)
尝试使用created_at
分组。
您将在30秒内检查created_at
并对结果进行分组并触发每个超过30秒的通知,否则您将分组并解雇一个群组。
例如:
$oNotifications = Notifications::where('is_read', '=', false)->get();
$aNotifyGroup = [];
foreach($oNotifications as $oNotify)
{
if($oNotify->created_at->diffInSeconds(Carbon::now()) <= 30)
{
// Add to group for later fire
$aNotifiyGroup[] = $oNotify;
}
else
{
//Fire notification
}
}
//Fire Grouped notification
foreach($aNotifyGroup as $oNotify)
{
//Fire
}