dibi – získání hodnot z jednoho sloupce do 1D pole

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

Ahoj, marně se snažím přijít na to jak pomocí dibi získat jednoduše data z jednoho sloupce tabulky do jednoduchého pole. Zkoušel jsem fetchAssoc, fetchPairs apod., ale vždy to vrací pole

Array (
	[0] => DibiRow Object ( [id] => 1 )
	[1] => DibiRow Object ( [id] => 3 )
)

Já bych potřeboval jen

Array (
	[0] => 1
	[1] => 3
)

Jako nouzovku jsem to řešil ručním přeskládáním hodnot přes foreach, ale to je prasárna.
V ADODB jsem na to používal getCol, v dibi jsem ale nic podobného nenašel.

Díky.

Ot@s
Backer | 476
+
0
-

Pro Tvoji konkrétní potřebu nic takového v dibi není, tj. musíš si to sám dotáhnout.
Nezkoušeno…

// pokud zalezi na zachovani vsech radku
$results = dibi::fetchAll('SELECT * FROM xyz');
array_walk( (array) $results, function (&$r) { $r = $r['id']; } );
}

// nebo to hnat pres fetchPairs, resp. id je soucasne key
$results = dibi::query('SELECT id FROM xyz')->fetchPairs('id', 'id');
Filip111
Člen | 244
+
0
-

fetchPairs jsem zkoušel – to mi nepomůže, indexem je klíč, který nemusí být kontinuální a pokud budu dotazovat jiný sloupec než id, třeba nějaké textové hodnoty, mam smůlu.

S array_walk to vidím cca na stejnou složitost jako s foreach, takže to taky nic moc neřeší.

Napíšu si na to vlastní funkci nebo nebo kouknu jestli jde rozšířit dibi.

iguana007
Člen | 970
+
0
-

jde to, zavolej to takto:

dibi::fetchPairs('SELECT zdeDejPouzeJedenSloupec FROM tabulka');
Milo
Nette Core | 1283
+
0
-

Dá se jak psal iguana007, nebo

Dibi::query('SELECT col FROM ...')->fetchPairs(NULL, 'col');

Dibi fórum

Filip111
Člen | 244
+
0
-

fetchaPairs už jsem taky zkoušel, dokonce i s tím null a vracelo mi to jiný pole než jsem potřeboval.
Nicméně když to teď zkouším znovu, tak

fetchPairs(null, 'id')

dělá přesně co potřebuju.

Díky.