[2.0.12] Sub select v cyklu foreach alebo ako dodatocne naselektovat dalsie data

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
HappyFace
Člen | 162
+
0
-

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
+
0
-
  1. Je veľký problém vytvoriť cudzie kľúče? To by bolo ideálne riešenie.
  2. 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
+
0
-

ta 3. moznost pomohla :) .. ja som to skusal ale bez toho clone co evidentne nemalo ucinok

  1. 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
  2. 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