![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 22.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Chociaż od dawna biernie korzystam z tego forum (znajduje dużo interesujących informacji) to dopiero dzisiaj założyłem konto i postanowiłem napisać pierwszy temat. Chciałbym się dowiedzieć czy macie jakiś rozsądny pomysł na pobranie z bazy danych połączonych tabel w postaci "połączonych" (hierarchicznych ?) obiektów? Mam problem w dosyć rozbudowanym systemie, więc na potrzeby tego postu chciałbym zaprezentować na prostym przykładzie co mam na myśli. Mamy dwie tabele `news` oraz `comment` z relacją jeden do wielu:
Wypełnijmy je przykładowymi danymi.
Stórzmy dwie klasy odpowiadające tabelą w bazie (dla ułatwienia atrybuty będą publiczne). Dodatkowo classa news będzie posiadała dodatkowy atrybut $comments będący tablicą zawierającą wszystkie komentarze
W tym momencie w łatwy sposób możemy pobrać z bazy danych np wszystkie newsy:
W analogiczny sposób moglibyśmy pobrać wszystkie komentarze. Pytanie jest takie, czy istnieje możliwość pobranie wszystkich newsow tak aby ich atrybut comments zawieral obiekty komentarzy do nich nalezacych ?
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 37 Pomógł: 2 Dołączył: 1.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 22.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Chodzi o to aby miał tablicę obiektów klasy news, w której każdy z nich będzie posiadał pole comments będące znów tablicą obiektów klasy comment. Oczywiście każdy news powinnien zawierać commenty dotyczace tylko jego (comment.id_news = news.id)
Możliwym rozwiązaniem jest pobranie najpierw tabeli news a potem w petli pobieranie odpowiednich komentarzy do nich, jednak jest to rozwiązanie moim zdaniem całkowicie niepoprawne ponieważ ilość zapytań będzie równa n+1 ilości newsów. Chodzi mi o to czy macie jakiś pomysł aby jednym (no może dwoma) zapytaniami pobrać i stworzyć taką hierarchie obiektów:
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 08:37 |