Odkazy: dibi | API reference

Forum: [česky] [english]

dibi fórum

tiny ‘n’ smart
database layer

Nejste přihlášen(a)

#1 před 2 lety

zool
Člen
Registrovaný: 28. 10. 2009
Příspěvky: 10

Jak získat asociativní pole??

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')

 

#2 před 2 lety

LastHunter
Moderator
Registrovaný: 8. 1. 2009
Příspěvky: 1621

Re: Jak získat asociativní pole??

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;
}

 

#3 před 2 lety

zool
Člen
Registrovaný: 28. 10. 2009
Příspěvky: 10

Re: Jak získat asociativní pole??

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;-)

 

#4 před 2 lety

Tomik
Nette Evangelist
Registrovaný: 20. 3. 2005
Příspěvky: 566

Re: Jak získat asociativní pole??

zool napsal(a):

Já jsem se právě chtěl tomu vyhnout to vypisovat, (…)

Vždyť ani v dibi není nutní to vypisovat.

 

#5 před 2 lety

zool
Člen
Registrovaný: 28. 10. 2009
Příspěvky: 10

Re: Jak získat asociativní pole??

A jo, super díky pomohlo to fetch

 

#6 před 2 lety

zool
Člen
Registrovaný: 28. 10. 2009
Příspěvky: 10

Re: Jak získat asociativní pole??

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.

 

#7 před 2 lety

LastHunter
Moderator
Registrovaný: 8. 1. 2009
Příspěvky: 1621

Re: Jak získat asociativní pole??

A k čemu potřebuješ pole?

 

#8 před 2 lety

zool
Člen
Registrovaný: 28. 10. 2009
Příspěvky: 10

Re: Jak získat asociativní pole??

Právě že to aplikuji na šablonu a ta mi podporuje pouze pole nikoliv objekt :-(

Editoval zool (28. 10. 2009 21:43)

 

#9 před 2 lety

LastHunter
Moderator
Registrovaný: 8. 1. 2009
Příspěvky: 1621

Re: Jak získat asociativní pole??

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? :)

 

#10 před 2 lety

zool
Člen
Registrovaný: 28. 10. 2009
Příspěvky: 10

Re: Jak získat asociativní pole??

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)

 

#11 před 2 lety

zool
Člen
Registrovaný: 28. 10. 2009
Příspěvky: 10

Re: Jak získat asociativní pole??

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 :-).

 

Zápatí