tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

FetchAssoc – odstranění klíče z výsledného pole

před 9 lety

vasek125
Člen | 34

Ahoj. Pomocí $result->fetchAssoc(‚username,=‘) získám asociativní pole s klíčem username. username je sice klíč, ale zároveň se nachází i v poli výsledků, lze nějak nastavit aby se použil pouze jako klíč?

před 9 lety

David Grudl
Nette Core | 6806

Co by mělo být hodnotou klíče?

před 9 lety

vasek125
Člen | 34

No nejlepší by bylo aby username byl klíč a hodnotou bylo pole, které už ten sloupec username neobsahuje.

tabulka: username, group, datum
         user1, gr1, 101010
         user2, gr2, 202020

dotaz: select username, group, datum from tabulka
...
$data = $result->fetchAssoc("username,=");


$data pak budou:
array('**user1**' => array('**user1**', 'gr1', 101010), 'user2' ...)

před 9 lety

David Grudl
Nette Core | 6806

Tohle fetchAssoc neumí a ani to není v plánu (důvodem je výkon), klíče je třeba odstranit ručeně.

před 9 lety

Milo
Nette Core | 1119

vasek125 napsal(a):

No nejlepší by bylo aby username byl klíč a hodnotou bylo pole, které už ten sloupec username neobsahuje.

tabulka: username, group, datum
         user1, gr1, 101010
         user2, gr2, 202020

dotaz: select username, group, datum from tabulka
...
$data = $result->fetchAssoc("username,=");


$data pak budou:
array('**user1**' => array('**user1**', 'gr1', 101010), 'user2' ...)

Tak to jsem nepochopil. Myslel jsem, že se chceš toho klíče zbavit? Čekal bych že chceš aby to dopadlo takhle, aby pole hodnot bylo bez klíče username a ne bez všech klíčů…

$data = array['user1']['group'] = 'gr1';
                      ['datum'] = 101010;
             ['user2']['group'] = 'gr2';
                      ['datum'] = 202020;

před 9 lety

vasek125
Člen | 34

Ano, to chci. Já popisoval co se stane pokud zavolám metodu fetchAssoc, ne to co chci aby se stalo. … Je škoda že fetchAssoc tohle neumožňuje když třeba nativně PDO::fetchAll ano.

před 9 lety

vasek125
Člen | 34

… teda alespoň podle manuálu ale skutečnost je asi jiná :-)

před 9 lety

vasek125
Člen | 34

tak nakonec to vážně umí :-)
$arr = $sth->fetchAll(\PDO::FETCH_GROUP|\PDO::FETCH_ASSOC);
$arr = array_map(‚reset‘, $arr);