FetchAll indexované dle primarního klíče

- ZZromanZZ
 - Člen | 87
 
Pouzivam to na vlastni dotaz, ktery spoustim metodou:
<?php
$result = $database->query($statement)->fetchAll();
?>
fetchPairs potrebuje presne dva sloupce, ja potrebuju ty co chci vcetne primarniho klice, ale v poli indexovanem dle toho primarniho klice
doted pouzivam:
<?php
        // indexovat dle primarniho klice
        $ret = array();
        foreach($this->database->query($statement) as $row)
        {
            $ret[$row['id']] = $row;
        }
        return $ret;
?>
				
- Elijen
 - Člen | 171
 
ZZromanZZ napsal(a):
fetchPairs potrebuje presne dva sloupce, ja potrebuju ty co chci vcetne primarniho klice, ale v poli indexovanem dle toho primarniho klice
To není pravda, podívej se do dokumentace :)

- Ot@s
 - Backer | 476
 
Elijen napsal(a):
ZZromanZZ napsal(a):
fetchPairs potrebuje presne dva sloupce, ja potrebuju ty co chci vcetne primarniho klice, ale v poli indexovanem dle toho primarniho kliceTo není pravda, podívej se do dokumentace :)
Pozor, ZZromanZZ má pravdu. Pokud má v $database
Nette\Database\Connection, tak query vrací
Nette\Database\Statement a fetchPairs
se volá přímo via PDO (resp. PDOStatement, fetchAll). Vyzkoušej:
$result = $database->query($statement)->fetchAll(PDO::FETCH_CLASS, "id"); // id ... sloupec, ktery chces mit jako klic
				
- Ot@s
 - Backer | 476
 
ZZromanZZ napsal(a):
reseni s FETCH_CLASS vubec nerozumim, vraci mi to: Class „id“ not found.
Promiň, moje nepozornost – má být PDO::FETCH_COLUMN
(Returns the indicated 0-indexed column). Správně tedy asi:
$result = $database->query($statement)->fetchAll(PDO::FETCH_COLUMN, 0); // misto 0 index sloupce, ktery ma byt jako index pole