Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony] problem z ilością zapytań
morganus
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 3
Dołączył: 8.12.2008

Ostrzeżenie: (0%)
-----


Czesc, mam sobie baze danych, schema.yml:


propel:
category:
_attributes: { phpName: Category }
id: { type: integer, required: true, primaryKey: true, autoincrement: true }
name: varchar(255)


product:
_attributes: { phpName: Product, isI18n: true, i18nTable: product_i18n }
id: { type: integer, required: true, primaryKey: true, autoincrement: true }
category_id: { type: integer, foreignTable: category, foreignReference: id, required: true, onDelete: CASCADE }
img1: varchar(255)
img2: varchar(255)
img3: varchar(255)


czyli wiadomo kategoria (1 - n) produkt
generalnie chce wyswietlic w templacie taka strukture:


<ul class="level1" id="root">
<?php foreach($kategorie as $kategoria): ?>
<li><a href="#"><?php echo $kategoria->getName()?></a>
<ul class="level2">
<?php foreach($kategoria->getProducts() as $product): ?>
<li><a href="" ><?php echo $product->getName()</a></li>
<?php endforeach; ?>
</ul>
</li>
<?php endforeach; ?>
</ul>
</div>

Wiadomo ze ta konstrukcja nie jest optymalna bo dla kazdego obiektu $kategoria zostanie wykonane zapytanie sql zwracajace liste produktow i teraz moje pytanie: jak zrobic to jednym zapytanie, czyli wiadomo trzeba zlaczyc join tabele tylko wtedy bede mial problem z wyswietleniem tego w templacie. Bardzo bym prosil o jakas porade jak to wyswietlic :] wszelkie sugestie mile widziane.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
michalg
post
Post #2





Grupa: Zarejestrowani
Postów: 122
Pomógł: 8
Dołączył: 20.10.2008

Ostrzeżenie: (0%)
-----


Cytat(morganus @ 1.06.2009, 16:52:26 ) *
Wiadomo ze ta konstrukcja nie jest optymalna bo dla kazdego obiektu $kategoria zostanie wykonane zapytanie sql zwracajace liste produktow i teraz moje pytanie: jak zrobic to jednym zapytanie, czyli wiadomo trzeba zlaczyc join tabele tylko wtedy bede mial problem z wyswietleniem tego w templacie. Bardzo bym prosil o jakas porade jak to wyswietlic :] wszelkie sugestie mile widziane.


Czemu miałbyś mieć problem? Jeżeli zrobisz joina to wynik zwrócony będzie w takiej samej postaci, tylko że w momencie wywołania getProducts nie będzie już wykonywane zapytanie do bazy. Przynajmiej tak to działa w doctrine, a propelu powinno raczej tak samo.
Go to the top of the page
+Quote Post
thomas2411
post
Post #3





Grupa: Zarejestrowani
Postów: 108
Pomógł: 7
Dołączył: 15.05.2005
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


W Propelu też to tak działa i to chyba najbrdziej optymalna metoda. Nawet w tutorialu Jobeet tak jest to zrobione.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 19:53