Jak správně vytáhnout data z 1:N

- zoool
 - Člen | 89
 
Ahoj mám menší problém,
mám produkty vytáhlé z tabulky produktu. a chtych k nim vytahnout obrazáz
z tabulky obrazků, prři upřesnění parametrů „hlavni“
asi nějak takto
foreach($this->model->getProdukty() as $produkt)
{
echo $produkt->nazev;
echo $produkt->related("obrazky")->where("hlavni",1)->fetch()->soubor;
}
Problém v tomto řešení je to, že to bere strašně mnoho paměti, když to ale udělám takto
foreach($this->model->getProdukty() as $produkt)
{
echo $produkt->nazev;
echo $this->model->getObrazky()->where(array("hlavni"=>1, "produkty_id" => $produkt->id))
}
tak to relativně správně, ale nemyslím si že je to dobré řešení.

- hrach
 - Člen | 1844
 
Zkus to prosim na teto vetvi: https://github.com/…-refactoring
Tvuj kod
foreach($this->model->getProdukty() as $produkt)
{
	echo $produkt->nazev;
	echo $produkt->related("obrazky")->where("hlavni",1)->fetch()->soubor;
}
je spravny :) takto by se to melo udelat.

- axis
 - Člen | 5
 
Mám stejný problém, data z related(), select mi vybere celou tabulku
keywords a pak ji teprve Nette nějak vyfiltruje, pokud mám větší tabulku,
tak mi to skončí na nedostatku paměti.
Zkoušel jsem to na 2.0.4 stab.
public function renderList($id)	{
		$table=$this->context->createLinks(); //ziskame tabulku
		foreach ($table->where('userid = ?',1)->order('id')->limit(10) as $links){
 		  echo '<p>';
		  echo $links->title;
			foreach($links->related('keywords') as $b){
       				echo ' <b>#'.$b->keyword.'</b> ';
    			}
   		  echo '</p>';
		}
	}
SQL: SELECT * FROM keywords

- axis
 - Člen | 5
 
Rád bych, ale na této verzi mi to hlásí
Recoverable Error
Argument 1 passed to Nette\Database\Table\Selection::__construct() must be an
instance of Nette\Database\Connection, string given, called in
C:\apache\users\nette\my\6\app\models\Links.php on line 12 and defined
class Links extends Selection
   {
       public function __construct(\Nette\Database\Connection $connection)
        {
           parent::__construct('linky', $connection); //line 12
        }
    }
Jen jsem tam nakopíroval adresář Nette, možná tam něco chybí, ale netuším ani zbla co :)
Editoval axis (5. 8. 2012 21:26)