Oznámení
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);