Je ne sais pas si c'est la meilleure façon de le faire, mais comme je n'ai aucune idée de quelqu'un d'autre, c'est ce que je ferais. J'espère que cette réponse pourra également en aider d'autres.
Nous avons 2 tableaux
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
L'idée est de sélectionner les notifications dans la table des notifications et de rejoindre la table notificationsRead et de vérifier la dernière notification de lecture et les lignes avec ID> notificationid. Et chaque fois que la page des notifications est ouverte, mettez à jour la ligne de la table notificationsRead.
La requête pour les notifications non lues, je suppose, serait comme ça..
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...
))
La requête ci-dessus n'est pas cochée.Grâce à l'idée de db design de @espais