Oznámení
Jak získat asociativní pole??
před 10 lety
- zool
- Člen | 144
Ahoj, jak získám klasické asociativní pole?? N2co jak mi dává příkaz
mysql_fetch_array
mám třeba dotaz
$result = dibi::query('select ID_FIR, NAZEV_FIRMY, IC from [FA_FIRMA] order by NAZEV_FIRMY');
Zkoušel jsem pak na výsledek dát metodu fetchPairs, ale to nepomohlo a vrátio mi to
Array ( [1] => Hodnota1 [2] => Hodnota2 )
A já bych chěl pole, které vypadá takto
Array ( 'ID_FIR' => 'Hodnota1' 'NAZEV_FIRMY' => 'Hodnota2', 'IC' => 'hodnota3')
před 10 lety
- LastHunter
- Člen | 1539
Tak to, co jsi uvedl, je defaultní chování metod fetch
a
fetchAll
s tím, že se vrací DibiRow
(resp. pole
obsahující položky DibiRow) a ty názvy sloupců jsou properties toho
objektu.
$result = dibi::query('select ID_FIR, NAZEV_FIRMY, IC from [FA_FIRMA] order by NAZEV_FIRMY')->fetch();
$result->ID_FIR;
$result->NAZEV_FIRMY;
$result->IC;
Pokud to chceš vyloženě v poli, zkusil bych ten $result
přetypovat na array ((array) $result
).
Pokud chceš vrátit asociativní pole (pro více výsledků) podle
nějakého sloupce, tak k tomu slouží fetchAssoc
.
$result = dibi::query('select ID_FIR, NAZEV_FIRMY, IC from [FA_FIRMA] order by NAZEV_FIRMY')->fetchAssoc('ID_FIR');
foreach($result as $key=>$value) {
//$key je ID_FIR
$value->ID_FIR;
$value->NAZEV_FIRMY;
$value->IC;
}
před 10 lety
- zool
- Člen | 144
Já jsem se právě chtěl tomu vyhnout to vypisovat, vitím že budu asi muset použít starou dobrou funckci mysql_fetch_array bo ta mi to vrátí, tak jak potřebuju a nemusím to řešit;-)
před 10 lety
- Tomik
- Nette Evangelist | 489
zool napsal(a):
Já jsem se právě chtěl tomu vyhnout to vypisovat, (…)
Vždyť ani v dibi není nutní to vypisovat.
před 10 lety
- zool
- Člen | 144
A jo, super díky pomohlo to fetch
před 10 lety
- zool
- Člen | 144
No ale stejně mi to přijde trochu složité, bo chci klasické pole z každého záznamu musím udělat toto:
$result = dibi::query('select ID_FIR, NAZEV_FIRMY, IC from [FA_FIRMA] order by NAZEV_FIRMY')->fetchAssoc('ID_FIR');
foreach($result as $key=>$value) {
$pole = (array) $value;
print_r($pole);
}
A tím dostanu klasické pole, není na to přímo nějaká metoda, která
mi přímo vrátí pole, jako by pole přímo řádků?
Omlouvám se s dibi jsem se poprve setkal včera.
před 10 lety
- LastHunter
- Člen | 1539
A k čemu potřebuješ pole?
před 10 lety
- zool
- Člen | 144
Právě že to aplikuji na šablonu a ta mi podporuje pouze pole nikoliv objekt :-(
Editoval zool (28. 10. 2009 21:43)
před 10 lety
- LastHunter
- Člen | 1539
Aha.
Trochu jsem pohledal na tomto fóru a podle tohoto threadu umí dibi pracovat s výsledky i jako s polem :) Zkoušels to vůbec? :)
před 10 lety
- zool
- Člen | 144
Nee četl jsem si právě jen dokumentaci k Dibi a přišla mi dost strohá, tak já na to mrknu a dám vedět výsledek ;-).
Jinak co bych mohl na dibi pochválit, je že super vymysleli, jak zadávat a editovat data v databázi. I když četl jsem tady i články, že někdy při vnořených dotazech je docela pomalé, a nedočetl jsem se jestli to opravili či nikoli. To by mě právě taky zajímalo.
Editoval zool (29. 10. 2009 15:45)
před 10 lety
- zool
- Člen | 144
Přečetl jsem, zhodnotil jsem a mám z toho toto $res->fetchAssoc(‚ID_FIR,=‘); , je to super vrátí mi to přesně to co potřebuju. Taky jsem tam četl, že původně dibi vracelo pole a až v této nové verti vrací objekt, který se sice tváří jako pole, avšak není pole :-).