如何处理同一对象的用户通知?

时间:2014-10-14 15:56:56

标签: php laravel notifications

我正在使用此代码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个通知...:\

1 个答案:

答案 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
}