Deine Datenbank muss erweitert werden, im einfachsten Fall um eine Tabelle, bspw.: FriendshipMappings
id (int, auto_increment, primary_key) | userid (int) | userfriendid (int) | friendship_since (datetime)
Wenn jetzt User 1 mit User 5 befreundet ist sieht der Datensatz halt in etwa so aus:
1 | 1| 5| 2018-05-21 13:24
Das Mapping gilt in beide Richtungen, also wenn User 1 mit User 5 befreundet ist, ist User 5 natürlich auch mit User 1 befreundet.
Ich würde den User, der die Freundschaftsanfrage gestellt ha immer zuerst nennen, dann hast Du auch eine Auswertungsbasis darüber, wer die Freundschaft initiiert hat, ohne dafür extra noch Tabellen führen zu müssen.
Das ist aber nur ein grundsäzlicher, einfacher Ansatz. Es gibt dazu natürlich auch weitaus komplexere Lösungen, die Dir hier aber glaube ich nicht weiter helfen würden.
Alles anzeigen
Danke erstmal für die Info
Nur kleine Frage:
Wie soll das denn gehen das, wenn User 1 den User 5 folgt, dass gleichzeitig User 5 den User 1 folgt (bzw befreundet sind).
Bei mir ist es ja so: User 1 folgt User 5.
Dies wird so in die Datenbank eingetragen:
id | user_id | follow_id | date
1 | 1 | 5 | ...
(user_id) ist der Inviter bzw der den "Button" folgen jetzt geklickt hat und den jenigen Folgen möchte, und Follow_id ist da welche Person er folgt (sozusagen der Accepter).
Wenn User 5 jetzt User 1 folgt, dann sieht das halt andersrum aus.
id | user_id | follow_id | date
1 | 5 | 1 | ...
Deswegen verstehe ich nicht wieso jetzt wenn User 1 den User 5 folgt, dass User 5 automatisch mit User1 befreundet ist. bzw den auch sozusagen folgt.
Stimmt. Hatte letztens überlegt das über die follower zu lösen.
Das macht ja aber keinen Sinn.
Jeder kann jemanden folgen (der gefolgte kann sich nicht wehren).
Aber eine Freundschaft muss bestätigt werden.
Also neue Tabelle.
Arnes Ansatz ist schön einfach.
Das einzigste, was mir noch einfällt wäre,
dass Du zwei Tabellen nutzt:
friend_request
friend
In friend_request speicherst Du Anfragen.
Ein Feld created_at gibt an, wann die Anfrage erstellt wurde.
Nach n Tagen läuft die request dann aus und der Eintrag wird gelöscht.
(Du brauchst dort eigtl kein Auto increment).
Wird die request angenommen, wird der Eintrag auch gelöscht.
Dann aber bekommt die Tabelle friends den gemeinsamen Eintrag.
Evtl reicht jetzt auch eine Zeile in friends:
user ID |user id | created_at
(Kann das nicht zu Ende denken. Bin mehr damit beschäftigt mit dem Tablet zu schreiben ;D
)
Alles anzeigen
Hi danke auch für die Info,
wozu aber eine zweite Tabelle?
Ich hab doch bereits eine.
meine Tabelle sieht so aus , hab vergessen die Spalte "Process" mitzuschreiben.
id | user_id | follow_id | process | date
Process ist immer auf 1, sollte der User Privat sein ist process auf 0 und wird erst auf 1 gestellt, wenn der User es angenommen hat.