• 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
103 wizyt
pytanie zadane 17 sierpnia 2018 w PHP, Symfony, Zend przez mi-20 Stary wyjadacz (10,070 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,290 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,070 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,290 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 221 wizyt
pytanie zadane 19 lutego 2018 w PHP, Symfony, Zend przez mi-20 Stary wyjadacz (10,070 p.)
0 głosów
1 odpowiedź 39 wizyt
pytanie zadane 22 stycznia w PHP, Symfony, Zend przez jzebala Obywatel (1,240 p.)
0 głosów
1 odpowiedź 66 wizyt
pytanie zadane 3 października 2018 w PHP, Symfony, Zend przez JeyJey Użytkownik (710 p.)
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

62,337 zapytań

108,478 odpowiedzi

226,466 komentarzy

35,312 pasjonatów

Przeglądających: 265
Pasjonatów: 11 Gości: 254

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.

...