citanie udajov z inych tabuliek (selection)
- Matej123
- Člen | 150
Mam jednu otazku. ako ziskam data z inych tabuliek na zaklade vztahov co su medzi tabulkami? Ak ziskam z databazy jeden riadok (ActiveRow) – napriklad ak sa dotazujem na vlastnosti clanku, tak potom viem v latte nacitat napr. autora clanku (z inej tabulky) – article->user->username. Takto mi to funguje zial iba ked pracujem s jednym zaznamom. Ak chcem pracovat s viacerymi (napriklad chcem vypisovat zoznam vsetkych clankov a ich autorov) tak mi vypise chybovu hlasku, ze user nepozna. V com moze byt problem? V prvom pripade ziskavam jeden riadok klasicky cez fetch(), v druhom pripade iba cez table(). Dakujem.
- Unlink
- Člen | 298
To čo hľadáš sa volá related()
https://doc.nette.org/…ase/explorer#…
EDIT
aha, teraz čítam že máš problém s ref()
, skús sem dať
ukážku kódu ktorý používaš.
Editoval Unlink (14. 9. 2015 17:27)
- Matej123
- Člen | 150
takto to mam v ArticleManager :
public function getArticles() {
return $this->database->table(self::TABLE_NAME)
->select('title,url,description,date_of_public, numOfReading')
->order(self::COLUMN_ID . ' DESC');
}
v presenteri len volam jednoducho :
$articles = $this->articleManager->getArticles();
$this->template->articles = $articles;
a v sablone by som chcel volat nejak username toho autora : napr. $articles->user->username
pozn. dobre mi to funguje ak nacitavam iba jeden riadok pomocou funkcie :
public function getArticle($url) {
return $this->database->table(self::TABLE_NAME)->where(self::COLUMN_URL, $url) ->select('article_id,title,url,description,content,user_id,date_of_public,numOfReading')->fetch();
}
potom klasicky v sablone zavolam $article->user->username a ide to
- Matej123
- Člen | 150
Unlink napsal(a):
To čo hľadáš sa volá
related()
https://doc.nette.org/…ase/explorer#…EDIT
aha, teraz čítam že máš problém sref()
, skús sem dať ukážku kódu ktorý používaš.
uz som to vyriesil , dal som do selectu user.username AS username a uz to ide :)
- Matej123
- Člen | 150
Unlink napsal(a):
No problém je v tom, že v prvom príklade neselectuješ
user_id
takže to nevie spojiť.Ešte by som mal jednu radu, ak používaš NDBT (nette database table) tak nemusíš uvádzať
->select()
lebo jednou z feature NDBT je to, že automaticky selectuje len stĺpce ktoré sú potrebné.
dakujem, uz rozumiem. Select som tu pouzil preto, lebo dalej v tom selecte mam nieco take (points/numberOfPoints) AS av_review – kde pocitam priamo priemerne hodnotenie, pri com v databaze mam ulozene len body a pocet bodovani. (neuvadzal som tu cely select)
- David Matějka
- Moderator | 6445
@Matej123 pro priste – koukni se, jak formatovat kod, ted jsem to za tebe upravil.
- Matej123
- Člen | 150
David Matějka napsal(a):
@Matej123 pro priste, koukni se, jak formatovat kod, ted jsem to za tebe upravil.
dakujem, myslel som na to, ale nevedel som ako, pardoon :)