Database context vnoreny v cykle
- steelbull
- Člen | 241
Mám otázku, mám
$articles = $this->context->table('articles')->where('published=1');
A dalej:
foreach($articles as $article) {
// Preco mi tento vnoreny context nefunguje spravne?
$nieco = $this->context->table('nejakatabulka')->where('article_id='$article->id);
// Ked namiesto toho robim query, funguje
$nieco = $this->context->query(SELECT * ....)
}
Editoval steelbull (8. 4. 2016 22:27)
- David Matějka
- Moderator | 6445
Preco mi tento vnoreny context nefunguje spravne?
co znamena „nefunguje spravne“ ?
jak to vypada presne? takhle ten kod asi nemas, protoze by to byl syntax error
- steelbull
- Člen | 241
David Matějka napsal(a):
Preco mi tento vnoreny context nefunguje spravne?
co znamena „nefunguje spravne“ ?
jak to vypada presne? takhle ten kod asi nemas, protoze by to byl syntax error
jj, to bol len priklad. Problem je, ze vzdy ked iterujem vo foreach nad vysledkom predchadzajuceho selektu a zaroven v tom istom foreach robim novy selekt, robi to blbosti. V tomto pripade mi vnoreny select vrati len idcka, nie hodnoty vsetkych stlpcov. Neviem preco. :-)
- Šaman
- Člen | 2666
Dokumentaci jsi
četl?
Jestli chceš jen jeden záznam (kompletní), použij get($id)
nad
tabulkou, nebo použij fetch()
na Selection
. Ten
where()
ti vrátí objekt Selection
a ten není
určený k tomu, aby se z něho přímo načítaly hodnoty objektů. Ty
potřebuješ Row
, který právě získáš pomocí
$table->get($id)
, $selection->fetch()
, nebo
iterací toho $selection
.
Editoval Šaman (9. 4. 2016 1:01)
- steelbull
- Člen | 241
Šaman napsal(a):
Dokumentaci jsi četl?
Jestli chceš jen jeden záznam (kompletní), použijget($id)
nad tabulkou, nebo použijfetch()
naSelection
. Tenwhere()
ti vrátí objektSelection
a ten není určený k tomu, aby se z něho přímo načítaly hodnoty objektů. Ty potřebuješRow
, který právě získáš pomocí$table->get($id)
,$selection->fetch()
, nebo iterací toho$selection
.
Jj, ale to nie je problem, ktory riesim :-( Vo vnutri foreach mi $this->context->table(‚haha‘)->fetchAll(); vycita len idcka. Neviem preco.