• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Laravel, organizacja i pobieranie danych

0 głosów
116 wizyt
pytanie zadane 17 sierpnia 2018 w PHP, Symfony, Zend przez mi-20 Stary wyjadacz (10,260 p.)
Witam, na samym początku chciałbym zaznaczyć że nie wiem czy nadałem dobry tytuł jednak nie mam innego pomysłu.

Przechodząc do rzeczy chciałbym zrobić możliwość zapraszania, dodawania etc znajomych, coś tak jak by facebook czy inne serwisy społecznościowe.

Mam jak na razie dwie tabele, tabela users, z danymi wszystkich użytkowników, jedna dla całego serwisu i tabela friends.

W tabeli friends jak na  razie przechowuję id użytkownika który zaprasza do znajomych, id zapraszanego i status (0-wysłano zaproszenie, 1-zaakceptowano, 2-zablokowany etc.)

I teraz nie wiem czy powinienem rozbudować tabelę friends i przechowywać w niej imię, nazwisko i avatar użytkownika czy te dane powinny być pobierane z tabeli users. Według mnie oba założenia mają swoje plusy i minusy. W pierwszym przypadku na pewno dużo łatwiej było by mi wyświetlać znajomych, no bo potrzebne dane są już w tej tabeli. Z drugiej jednak strony należało by przechowywać dane zapraszającego i zapraszanego, poza tym jest jeszcze problem edycji danych. Jeśli jeden użytkownik zmieni swoje dane trzeba będzie je również zmieniać w tej tabeli osobno żeby zawsze były aktualne.

W przypadku drugiego rozwiązania niknie problem edycji danych bo dane wystarczy aktualizować w jednej tabeli, no i tabela friends, w przypadku tego rozwiązania, jest dość jasna, Z drugiej strony też są dodatkowe zapytania do tabeli users, jest ich nawet więcej no i też kompletnie nie wiem jak to wykonać.

Proszę o opinię które rozwiązanie jest lepsze. W przypadku drugiego jak powinny wyglądać zapytania do tabeli users po pobranie tych danych. A może żadne z tych rozwiązań nie jest dobre i powinno to wyglądać zupełni inaczej???

Z góry dzięki

1 odpowiedź

0 głosów
odpowiedź 17 sierpnia 2018 przez Assasz Nałogowiec (28,630 p.)
Zastosuj relację wiele do wielu między userem i drugim userem. Tabela spinająca relację, powiedzmy friend, może prócz kluczy obcych zawierać dodatkowe pola jak np. status.

Jeśli chodzi o zapytania.. nie wiem, jak to wygląda w Laravelu, ale w SQL to po prostu joiny.
komentarz 17 sierpnia 2018 przez mi-20 Stary wyjadacz (10,260 p.)
czyli jak powinny wyglądać struktury tabeli? w sensie co powinno się znajdować w jednej i drugiej? bo w tabeli spinającej ma być id zapraszającego i id zaproszonego, tak? ewentualnie status
komentarz 17 sierpnia 2018 przez Assasz Nałogowiec (28,630 p.)
Masz tabelę user przechowującą jakieś tam dane na temat userów, i ją łączysz z tą sama tabelą, aby powstała relacja user - user. A dla relacji wiele do wielu tworzy się trzecią tabelę, która posiada klucze tabel, które chcemy połączyć. Czyli tak, będzie ona posiadać id zapraszającego i zaproszonego, plus status czy co tam jeszcze chcesz.

Podobne pytania

0 głosów
0 odpowiedzi 255 wizyt
pytanie zadane 19 lutego 2018 w PHP, Symfony, Zend przez mi-20 Stary wyjadacz (10,260 p.)
0 głosów
0 odpowiedzi 25 wizyt
0 głosów
1 odpowiedź 41 wizyt
pytanie zadane 22 stycznia w PHP, Symfony, Zend przez jzebala Obywatel (1,240 p.)
Porady nie od parady
Nie wiesz jak poprawnie zredagować pytanie lub pragniesz poznać którąś z funkcji forum? Odwiedź podstronę Pomoc (FAQ) dostępną w menu pod ikoną apteczki.FAQ

64,049 zapytań

110,440 odpowiedzi

231,294 komentarzy

47,819 pasjonatów

Przeglądających: 251
Pasjonatów: 9 Gości: 242

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...