Ich weiß nicht, ob dies der beste Weg ist, dies zu tun, aber da ich keine Ideen von jemand anderem habe, würde ich dies tun. Ich hoffe, dass diese Antwort auch anderen helfen kann.
Wir haben 2 Tische
notification
-----------------
id (pk)
userid
notification_type (for complexity like notifications for pictures, videos, apps etc.)
notification
time
notificationsRead
--------------------
id (pk) (i dont think this field is required, anyways)
lasttime_read
userid
Die Idee ist, Benachrichtigungen aus der Benachrichtigungstabelle auszuwählen und der Benachrichtigungstabelle beizutreten und die zuletzt gelesene Benachrichtigung und die Zeilen mit ID> Benachrichtigungs-ID zu überprüfen. Und jedes Mal, wenn die Benachrichtigungsseite geöffnet wird, aktualisieren Sie die Zeile aus der NotificationsRead-Tabelle.
Die Abfrage für ungelesene Benachrichtigungen würde wohl so aussehen...
SELECT `userid`, `notification`, `time` from `notifications` `notificationsRead`
WHERE
`notifications`.`userid` IN ( ... query to get a list of friends ...)
AND
(`notifications`.`time` > (
SELECT `notificationsRead`.`lasttime_read` FROM `notificationsRead`
WHERE `notificationsRead`.`userid` = ...$userid...
))
Die obige Abfrage wird nicht überprüft. Dank der Idee von db design von @espais