$context->table(‚my_temporary_table‘) nenajde temporary tabulku

Honza.Mottl
Člen | 104
+
0
-

$context->table(‚my_temporary_table‘)->fetchAll() nenajde temporary tabulku. Da se s tim neco delat?

Workaround:
Pokud pouziji $context->query(‚select * from my_temporary_table‘)->fetchAll() tak se na temporary table dostanu. ale v Nette\Database\Table\IRow[] eni indexovane podle primarniho klice jako tomu je pres $context->table(‚my_temporary_table‘)->fetchAll(). Asi budu muset vysledek preorat nastavit tam primarni klic.

Existuje nejaky zpusob jak pouzit $context->table(‚my_temporary_table‘) na temporary tabulku? Diky

CZechBoY
Člen | 3608
+
+1
-

Pro indexování podle primárního klíče můžeš použít ->fetchPairs('nazev_primarniho_klice');

Honza.Mottl
Člen | 104
+
0
-

Diky, potrebuji vice sloupcu. Obesel jsem to, vytvoril jsem si pole se spravnym klicem takto :

	        $polozky = [];
$fetchResult = $this->database->query('SELECT * from pripad_polozka_tmp')->fetchAll();

if ($fetchResult) {
    foreach ($fetchResult as $key => $item) {
        $polozky[$item[self::PRIPADPOL_COLUMN_ID]]= $item;
    }
}
CZechBoY
Člen | 3608
+
0
-

A ten fetchPairs ti nejel? Melo by to udelat uplne stejnou strukturu…

Honza.Mottl
Člen | 104
+
0
-

Nezkousel jsem to. Podle dokumentace fetchPairs vraci dvojice klic, jiny sloupec. Ja potrebuji vsechny sloupce tabulky, dva mi nestaci.

CZechBoY
Člen | 3608
+
0
-

jj kdyz das druhej parametr na NULL tak vrati celej radek.

Honza.Mottl
Člen | 104
+
0
-

Diky, zase jsem se neco naucil. Na normalni tabulce to funguje dobre jak jsi popsal. Ale na temporary tabulce to skonci na exception „Nette\InvalidArgumentException Table ‚pripad_polozka_tmp‘ does not exist“.

Ony ty temporary tabulky jsou v mysql udelany tak trochu mimo system. DML prikazy fuguji, ale v data dictionary je zapiraji a z toho plynou vsechny problemy, protoze Nette tabulku v data dictionary nenajde. A taky je divne, ze se tabulka musi v session pokazde znovu vytvaret. Kdyz to ale clovek vi, tak se s tim delat da.

Delaval jsem s temporary tabulkami v Oraclu, tam se definicne temporary tabulka vytvori jednou a je videt v data dictionary. Data ma kazda session svoje, ale definice je spolecna.

Honza.Mottl
Člen | 104
+
0
-

Ono to vypadne uz na $context->table(‚my_temporary_table‘) a na fetchPairs uz nedojde.

CZechBoY
Člen | 3608
+
+1
-

No vsak pouzijes tu query metodu a nad vysledkem zavolas ten fetchPairs (namisto fetchAll).

Honza.Mottl
Člen | 104
+
0
-

jo to je ono :) Diky. Nenapadlo me pustit fetchPairs na query.