Jak z výsledku SQL dotazu dostat string
- icanjan
- Člen | 30
Mám úplně jednoduchý problém, ale jelikož jsem začátečník, absolutně nevím jak na to.
Vytáhnu si z databáze kapely. Každá kapela pak má v tabulce band_post seznam postů které má. A v tabulce post pak jsou jména těchto postů. A jediné, co chci udělat je dostat ty jména postů (patřících k dané kapele) do jednoho stringu, abych si ho mohl dát do šablony. Ani po několikahodinovém prohledávání dokumentací a fór jsem na to nepřišel :-( Tak prosím o radu jak na to. Ani netuším jestli na to jdu vůbec dobře. Níže je nástřel mého kódu, který ale nefunguje a nedokážu to dát dohromady.
$bands= $this->database->table('kapely');
$posty = array();
// tady se snazim udelat string z postů, ktere kapela ma
foreach($bands as $band)
{
// zde by jako vysledek mely byt radky se jmeny postu?
$bandPosts = $this->database->query('SELECT post.name FROM band_post '
. 'INNER JOIN post ON band_post.post_id=post.id WHERE band_id=?',$band->id)->fetchAll();
// tady snad jeste nejak projit $bandPosts v cyklu
array_push($posty,$bandPosts->name);
}
$this->template->posts = implode(" ",$posty);
Díky za rady
- Mysteria
- Člen | 797
Šel bych cestou NDBT, zhruba takto:
$this->template->band = $this->database->table('band')->where('id', $id);
{foreach $band->related('band_post') as $bandPost}
{$bandPost->post->name}{sep},{/sep}
{foreach}
Viz podobný příklad zde: https://doc.nette.org/…ase/explorer#…
Editoval Mysteria (3. 10. 2014 21:13)
- icanjan
- Člen | 30
Díky moc, funguje to. Dokumentaci jsem četl a chtěl to podle ní udělat,
ale protože mi to nefungovalo uchýlil jsem se k SQL dotazu.
Nicméně jsem tak nějak doufal, že se v odpovědi na můj dotaz dozvím
i jak se pracuje s poly. Je na to někde nějaký dobrý tutoriál?
Třeba když mám Row (ne IRow) jak z toho vycucnout data do array. Jak udělat
a associativního pole (takovýto s těma šipkama =>) jen obyčejný pole,
aby mě pak na něm fungovala ta funkce implode a tak…
Díky
- David Matějka
- Moderator | 6445
muzes pouzit metodu fetchPairs na selection, resp. na ResultSetu (ten leze z citeheo query):
$articles = $this->database->table('articles');
$articles->fetchPairs('id', 'title');
// vytvori asociativni pole s pary id => title
$articles->fetchPairs('id');
// vytvori asociativni pole s pary id => radek
$articles->fetchPairs(NULL, 'title');
// vytvori pole s hodnotami "title" (klice jsou cislovane od nuly)