Nette\Database\Table\Selection do pola

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

Zdravim,
presedlavam z dibi na nette database a potreboval by som zo selection spravit viacrozmerne pole. Predpokladam, ze nette database si cachuje stlpce, ku ktorym sa postupne pristupuje. Pracujem na rest aplikacii, ktora bude ale velmi casto vracat data v podobe, v akej ich vytiahne z db, preto by som potreboval, aby som vedel jednoduchou funkciou celu selection prekonvertovat do pola (a nasledne mohol vratit JSON). Existuje na to nejaka funkcia, jednoduchy trik alebo budem musiet zakazdym manualne prechadzat selection foreach-om a vypisovat stlpce, ktore potrebujem?
Dakujem.

ViPEr*CZ*
Člen | 814
+
0
-

fetchPairs() by nepomohlo?

pogo
Člen | 29
+
0
-

Podla dokuemntacie som pochopil, ze pokial zavolam ->fetchPairs(‚idCustomers‘) tak by mi malo vratit vsetky riadky asociovane podla idCustomer, co by mi vyhovovalo, ale vrati mi to pole prazdnych prvkov s klucom.

petr.pavel
Člen | 535
+
+1
-

Tohle je metoda, kterou jsem si pro tento účel udělal pro NotORM. Předpokládám, že s NDB je to stejné. fetchPairs() vrací čisté pole, jen když ho zavoláš se dvěma parametry. Když potřebuješ pole polí, tak musíš procházet a převádět iterátor na pole.

<?php
  public static function toArray($source) {
    // ----------------------------------------------------------------

    if (is_object($source)) {
      list($source) = self::toArray(array($source));
    }

    if (!is_array($source)) {
      return $source;
    }

    foreach ($source as &$row) {
      if (is_object($row)) {
        $row = iterator_to_array($row);
      } else {
        $row = self::toArray($row);
      }
    }
    return $source;
  }
?>
pogo
Člen | 29
+
0
-

Diky, toto vyzera dobre:)

Fanda
Člen | 39
+
0
-

petr.pavel napsal(a):

Funguje to skvěle. Díky.