Odkazy: dibi | API reference

Forum: [česky] [english]

dibi fórum

tiny ‘n’ smart
database layer

Nejste přihlášen(a)

#1 před rokem

slapo
Člen
Registrovaný: 16. 7. 2009
Příspěvky: 24

Vrátenie výsledného SQL bez vykonania query

Zdravím,

je možné nejako z dibi získať SQL tak, ako by ho zložila bez toho, aby sa SQL vykonalo?
Hľadal som na fórach aj v dokumentácii, ale buď som to prehliadol, alebo taká metóda neexistuje.

Príklad na vymyslenej funkcii getSql:

$sql = "SELECT col1, col2 FROM %n WHERE price BETWEEN %f AND %f";
$sql_full = dibi::getSql($sql, self::TABLE_PRODUCT, $lower_price_limit, $upper_price_limit);

a obsah $sql_full by potom bol bez ukončovacej bodkočiarky napr.

SELECT col1, col2 FROM product WHERE price BETWEEN 0.00 AND 100.00

Existuje v dibi nejaký ekvivalent getSql?
Ak nie, šlo by to pridať do najbližšej stabilnej verzie?

Použitie by bolo najmä v opakovaných subqueries. Zlepšilo by to opakovanú použiteľnosť kódu v zmysle DRY.

Ďakujem.

Editoval slapo (28. 5. 2010 10:02)

 

#2 před rokem

phx
Moderator
Registrovaný: 17. 4. 2008
Příspěvky: 878

Re: Vrátenie výsledného SQL bez vykonania query

Z DibiFluent to jde pres __toString() nebo neco takoveho.

 

#3 před rokem

Ondřej Mirtes
Moderator
Registrovaný: 8. 1. 2009
Příspěvky: 1621

Re: Vrátenie výsledného SQL bez vykonania query

V normálním dibi napiš místo dibi::query dibi::test.

 

#4 před rokem

slapo
Člen
Registrovaný: 16. 7. 2009
Příspěvky: 24

Re: Vrátenie výsledného SQL bez vykonania query

Ondřej Mirtes napsal(a):

V normálním dibi napiš místo dibi::query dibi::test.

Ďakujem obom.

dibi::test() je skoro ono, len som to musel skĺbiť s funkciami pre prácu s bufferom, keďže sa zdá, že test() to rovno vypíše.

 

#5 před rokem

phx
Moderator
Registrovaný: 17. 4. 2008
Příspěvky: 878

Re: Vrátenie výsledného SQL bez vykonania query

Projdi si obsah metody dibi::test() treba tam vykoukas jak to ziskat primo. (najdes nejakou jinou public metodu)

 

#6 před rokem

PetrP
Moderator
Registrovaný: 15. 7. 2008
Příspěvky: 657

Re: Vrátenie výsledného SQL bez vykonania query

To co hledáš je:

dibi::getConnection()->translate('SELECT * FROM [blabla] ...');

 

Zápatí