Как обрабатывать пользовательские уведомления для одного и того же объекта?

Я использую этот код http://codegains.com/2014/06/laravel-4-notification-system/
для моей системы уведомлений все работает нормально. Но теперь я столкнулся с проблемами, пользователи наводнены уведомлениями.
Я имею в виду, что если 5 пользователям нравится одно изображение, автор этого изображения получит 5 уведомлений с «Пользователю X понравилась ваша картинка image.png». Где Х это 5 разных названий.
Теперь я хочу знать, есть ли у кого-нибудь идеи о том, как это сделать, чтобы в приведенном выше случае пользователь получал только 1 уведомление о том, что «пользователям X, Y, Z понравилась ваша картинка image.png».

Редактировать:
Вот структура таблиц «Уведомления»
http://codegains.com/wp-content/uploads/2014/06/notifications-2.png

Теперь я пытаюсь сгруппировать уведомления с повторением всех уведомлений, которые выбраны из БД с ORDER BY object_id, и я сравниваю текущий object_id с предыдущим, и поэтому я получаю правильную форму. Но это занимает много времени, потому что он запускается при каждой загрузке страницы (главная страница). И 1000 пользователей, с 1000 уведомлений …: \

-2

Решение

Попробуйте сгруппировать с created_at,

Вы проверите для created_at в течение 30 секунд, сгруппируйте результаты и сгенерируйте каждое уведомление, превышающее 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
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]