tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

Generování seznamu tabulek %n

před 11 lety

Jakub Šulák
Člen | 223

Chtěl bych se zeptat na jednu věc:
Jak udělat přejmenování tabulek table AS t?

Příklad:

<?php
  dibi::test('SELECT table_a.xyz, table_b.abc FROM %n',array('table_a','table_b'));
  // vysledek: SELECT table_a.xyz, table_b.abc FROM table_a, table_b

  // ale potreboval bych mit moznost prejmenovat tabulku pomoci AS asi takto:
  dibi::test('SELECT a.xyz, b.abc FROM %n',array('table_a'=>'a','table_b'=>'b'));
  // vysledek: SELECT a.xyz, b.abc FROM table_a AS a, table_b AS b

?>

Je něco takového možné při použití jiné syntaxe? Tato nefunguje…

před 11 lety

phx
Člen | 652
dibi::query('SELECT a.xyz, b.abc FROM table_a AS a, table_b b');
// vhodne je zapisovat nazvy tabulek a sloupecku do `` nebo do [] oboje si dibi prevede na to spravne pro danou DB. Ja pouzivam []
// takze:
dibi::query('SELECT [a.xyz], [b.abc] FROM [table_a] AS a, [table_b] b');

před 11 lety

Jakub Šulák
Člen | 223

Jasně, to vím – já ale řeším to, jak zapsat to [table_a] AS a tak, že to generuji z pole. Viz moje druhá ukázka zdrojáku. Když člověk neví, z jakých tabulek se bude sql dotaz sestávat.

před 11 lety

phx
Člen | 652

No pokud nevis z jakych tabulek budes vypisovat tak proc jim davat alias, kdyz vetsinou bude asi jen SELECT * FROM ....

Jinak abych rekl pravdu tak nevim. Jedine udelat nejaky predzpracovani a preves to na pole, ktere tam potom vlozis modifikatorem %ex.

před 11 lety

Jakub Šulák
Člen | 223

No já jen jestli neexistuje možnost zápisu:

<?php
  dibi::test('SELECT a.xyz, b.abc FROM %n',array('table_a'=>'a','table_b'=>'b'));
  // vysledek: SELECT a.xyz, b.abc FROM table_a AS a, table_b AS b
?>

Přijde mi to takto asi „nejhezčí“. Bylo by fajn to někdy do dibi přidat… no to je fuk, nebudu mít aliasy:-).

Ale ještě jeden dotaz:

<?php
$tables = array('table_1','table_2');
dibi::select('*')
                ->from($tables)
                ->execute();
?>

Tabulky se vloží ve formátu ‚table1‘ – což udělá chybu (správně table_1). To beru spíš jako chybku… Nepomůže ani $tables = array(‚[table1]‘,‚[table2]‘). Nebo je jiná syntaxe?

před 11 lety

David Grudl
Nette Core | 6806

FROM %n',array('table_a'=>'a','table_b'=>'b') by se jako FROM table_a AS a, table_b AS b generovat mohlo, doplním do další revize. Stejně tak chování dibi::select('*')->from($tables).

před 11 lety

Jakub Šulák
Člen | 223

Super, díky.