[2.0.12] Sub select v cyklu foreach alebo ako dodatocne naselektovat dalsie data
- HappyFace
- Člen | 162
Ahojte,
mam nasledujuci kod:
<div n:foreach="$products_groups as $product">
{var $price_data = $price->where(array('id_product' => $product->id_product))->fetch()}
{dump $price_data}
</div>
potrebujem vypisat ceny k jednotlivim produktom zial dostal som DB ktora je
priserna a nepouziva ziadne standardy :( cize nejde pouzit FK, takze sa
trapim..
Kod co som tu dal vrati data len prvy krat potom to uz hazde len false , neviete
poradit ako spojit tieto dve tabulky alebo ako vipisat tu cenu pre
produkty??
dakujem
- romiix.org
- Člen | 343
- Je veľký problém vytvoriť cudzie kľúče? To by bolo ideálne riešenie.
- možnosť:
{var $price_data = $price->where(array('id_product' => $product->id_product))->fetch()}
použi iba raz. Následne používaj v celej šablóne iba
$price_data->nejaky_atribut
,
$price_data->dalsi_atribut
,…
3. možnosť:
Ak z nejakého dôvodu potrebuješ použiť $price->where
aj
ďalej v kóde (napr. vypisuješ cenu viacerým produktom), použi clone:
{var $cl_price = clone $price}
{var $price_data = $cl_price->where(array('id_product' => $product->id_product))->fetch()}
Takto môžeš použiť $price->where
aj ďalej.
Problém spočíva v tom, že po zavolaní fetch()
už
pracuješ s Nette\Database\Table\ActiveRow
a to žiadne metódy ako where()
ani
fetch()
nemá.
- HappyFace
- Člen | 162
ta 3. moznost pomohla :) .. ja som to skusal ale bez toho clone co evidentne nemalo ucinok
- uff mat tak viac casu a hlavne chut to prerobit, nechcem sa v tom vrtat lebo mam inych starosti dost a nebodaj ak by prestalo nieco fungovat tak vianoce stravim praci
- hmm to je vlastne to iste co mam teraz co je nefunkcne aspon pre moj pripad
dik za rychlu odpoved, viem ze je to hnusne pouzite ale v tejto situacii sa stym neda co robit, uz som to zadal ako task , zrele na refaktor