Wojciech Sznapka

Wojciech Sznapka CTO @ STS Zakłady
Bukmacherskie

Temat: Propel relacja odzwierciedlona w obiektach 1:N

Załóżmy, że mamy 2 tablice
Galerie
-id
-nazwa

Zdjęcia
-id
-sciezka
-id_galerii

W galerii:
1 | Psy
2 | Koty

W zdjęciach:

1 | Owczarek | 1
2 | Doberman | 1
3 | Pudelek | 1
4 | Perski | 2
5 | Dachowiec | 2

I teraz robię złączenie propelem, to pobierze mi tak:

1 | Psy | 1 | Owczarek
1 | Psy | 2 | Doberman
1 | Psy | 3 | Pudelek
2 | Koty | 4 | Perski
2 | Koty | 5 | Dachowiec

A ja bym chciał tak:
1 | Psy | array( Owczarek, Doberman, Pudelek)
2 | Koty | array(Perski, Dachowiec)

oczywiście te tablice zawierały by wszystkie kolumny pobrane, tutaj napisałem dla skrótu. Czy propel ma wbudowane metody do uzyskania takiej struktury, czy trzeba samemu to robić (jak do tej pory :P) ?
Alan Gabriel B.

Alan Gabriel B. Software Engineer,
IFX

Temat: Propel relacja odzwierciedlona w obiektach 1:N

Nie ma. Musisz użyć Criteria, a następnie metody BasePeer::doSelect($criteria).
Oczywiście nie masz co liczyć na obiekty, dostajesz PDOStatement (w 1.3).

edit:

"dachowiec" :))))Alan B. edytował(a) ten post dnia 22.07.08 o godzinie 00:38
Krzysztof P.

Krzysztof P. Programista, Team
Leader

Temat: Propel relacja odzwierciedlona w obiektach 1:N

Lub zrobić odwrotnie, pobrać zdjęcia i dołączyć galerie, wtedy Propel tworzy automatycznie obiekty galerii.

ZdjeciaPeer::doSelectJoinGalerie( ... );
Wiktor Tychulski

Wiktor Tychulski R&D engeener
software

Temat: Propel relacja odzwierciedlona w obiektach 1:N

jesli szukasz lepszego rozwiazania proponuje poczytac o docrine(phpdoctrine.org). zdecydowanie jest lepszym orm'em. napisany jest, co widac na pierwszy rzut oka, przez bardziej profesjonalna ekipe, a do tego w php5. Posiada zdecydowanie duzo wieksze mozliwosci. radzi sobie z relacjami many-to-many. jedyny minus doctrine to to, ze relacje niestety trzeba dopisac recznie do automatycznie wygenerowanych klas, ale na cale szczescie jest to jedna linia kodu do jednej relacji i jest to wrecz banalne zadanie i nie zajmuje za wiele czasu. Powiazane obiekty znajduja sie wlasnie w tablicy - np na twoim przykladnie kazdy obiekt galeria bedzie mial wlasciwosc o nazwie zdjecia, ktory bedzie tablica obiektow.

Pozdrawiam
Wojciech Sznapka

Wojciech Sznapka CTO @ STS Zakłady
Bukmacherskie

Temat: Propel relacja odzwierciedlona w obiektach 1:N

Wiktor Tychulski:
jesli szukasz lepszego rozwiazania proponuje poczytac o docrine(phpdoctrine.org). zdecydowanie jest lepszym orm'em. napisany jest, co widac na pierwszy rzut oka, przez bardziej profesjonalna ekipe, a do tego w php5. Posiada zdecydowanie duzo wieksze mozliwosci. radzi sobie z relacjami many-to-many. jedyny minus doctrine to to, ze relacje niestety trzeba dopisac recznie do automatycznie wygenerowanych klas, ale na cale szczescie jest to jedna linia kodu do jednej relacji i jest to wrecz banalne zadanie i nie zajmuje za wiele czasu. Powiazane obiekty znajduja sie wlasnie w tablicy - np na twoim przykladnie kazdy obiekt galeria bedzie mial wlasciwosc o nazwie zdjecia, ktory bedzie tablica obiektow.

Pozdrawiam

A czy na podstawie tego przykładu z propela
http://propel.phpdb.org/trac/wiki/Users/Documentation/...

w doctrine da się to zrobić jednym zapytaniem ?
Krzysztof P.

Krzysztof P. Programista, Team
Leader

Temat: Propel relacja odzwierciedlona w obiektach 1:N

Wojciech Sznapka:
A czy na podstawie tego przykładu z propela
http://propel.phpdb.org/trac/wiki/Users/Documentation/...

w doctrine da się to zrobić jednym zapytaniem ?

"The code above will execute 1+n SQL statements, where n is the number of books rows returned"

(miałem to napisać, ale lepiej jest cytować;])
Wojciech Sznapka

Wojciech Sznapka CTO @ STS Zakłady
Bukmacherskie

Temat: Propel relacja odzwierciedlona w obiektach 1:N

Michał S.:
Wojciech Sznapka:
A czy na podstawie tego przykładu z propela
http://propel.phpdb.org/trac/wiki/Users/Documentation/...

w doctrine da się to zrobić jednym zapytaniem ?

"The code above will execute 1+n SQL statements, where n is the number of books rows returned"

(miałem to napisać, ale lepiej jest cytować;])

To wiem, ale zwykłym sqlem da się zrobić to 1 zapytaniem. A w doctrine? :>

Następna dyskusja:

propel czy doctrine ?




Wyślij zaproszenie do