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 | 1838
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)