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