Dane dotyczące postu powinny w bazie zawierać informacje o dacie- > dodania np. utworzenia, ale często takie systemy mają datę aktualizacji.
Sortowanie przy wybieraniu danych mógłbyś robić na podstawie daty ostatniej aktualizacji (jeśli dla danego rekordu jest ona wcześniej niż data utworzenia, aby móc rozgraniczyć sytuacje w których posty nigdy nie były aktualizowane).
W takim przypadku dla każdego postu jeśli nie ma daty aktualizacji: albo sprawdzać aktualną date utworzenia, albo ustawić taki model danych, że podczas tworzenia postów data utworzenia jest jednocześnie datą aktualizacji (ale nie jest to raczej dobre, bo jednak myli znaczenie i atomowość danych w pojedynczej kolumnie).
Zdjęcia powinny być chyba częścią postu, bo nie wiem jak to generalnie w strukturze ,masz w bazie, ale jeśli np zdjęcie należy do postu i zostało zaktualizowane, to bezpośrednio aktualizacji ulega data-> która przechowuje sam post, bo jako jeśli jest w relacji to powinien być stroną główną tzw. właścicielem relacji.
Jak do tego się maja obserwujący?
No w tym wypadku jesli listujemy posty dla wszystkich użytkowników, to w 1 kolejności powinny się pojawiać kolejno posty "obserwujących" i wybrane z nich posty filtrowane według daty jak opisałem, potem następnie dobierane pozostałe.
Da się to nawet w dobrym jednym SQL łączonym z podzapytaniem napisać, wszystko sprowadza się do tego jaką strukturę bazy danych posiadasz i jak dane są ze sobą powiązane