Získání proměnné z dotazu v presenteru

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Ravenss
Člen | 12
+
0
-

Dobrý den,
mám problém se získáním jedné proměnné z dotazu v databázi.

Debugger vyhazuje chybu:
Cannot read an undeclared property Nette\Database\Table\Selection::$layout

V presenteru se tu proměnnou snažím získat takto:

<?php
$view = $this->context->pages->findPageLayout($id)->layout;
?>

V modelu (pages.php) mám…

<?php
    public function findPageLayout($page_id) {
        $row = $this->getTable()->select('layout')->where(array('url' => $page_id));
        $row->fetch();
        return $row;
    }
?>

Jediné funkční řešení je $this->context->pages->findPageLayout($id)[0][‚layout‘];
to mi ale příjde jako naprostá prasárna.

Tabetha
Člen | 140
+
0
-

skusit ?

<?php
return $row->fetch();
?>
Ravenss
Člen | 12
+
0
-

Paráda, funguje, moc děkuji.

Byl by mě ještě někdo schopný v krátkosti vysvětlit důvod proč to tak je? :)

Pavel Macháň
Člen | 282
+
0
-

Ravenss napsal(a):

Paráda, funguje, moc děkuji.

Byl by mě ještě někdo schopný v krátkosti vysvětlit důvod proč to tak je? :)

public function findPageLayout($page_id) {
     $row = $this->getTable()->select('layout')->where(array('url' => $page_id));
     $row->fetch();
     return $row;
 }

protože todle nevrátíš ani neuložíš do jiné proměnné.

[$row->fetch()] != [$row = $row->fetch()];

pomocí return vrátíš původní $row a ne fetch

Editoval EIFEL (6. 6. 2014 14:57)