Na navigaci | Klávesové zkratky

Translate to English… Ins Deutsche übersetzen…

Závěrem dibitýdne...

…tu mám ještě několik novinek. Především, nyní je možné do řetězce zapsat více modifikátorů najednou a teprve poté uvést jejich hodnoty:

dibi::query('
SELECT * FROM [table]
WHERE id = %i AND added > %d', $id, $time
);

Tímto se z modifikátorů stávají takové chytré „placeholders“. Už ani nemusí být umístěny zcela na konci řetězce.

Zároveň zavádím několik nových modifikátorů:

  • %ex pro expanzi pole do argumentů (Rubysté znají jako *[1,2,3])
  • %or a %and před polem spojí jeho prvky s oddělovačem ‚AND‘ nebo ‚OR‘
  • %lmt a %ofs pro přenositelné a možná snadnější nastavení LIMITOFFSET

Příklady použití:

$where[] = '[age] > 20';
$where[] = '[email] IS NOT NULL';
dibi::query('SELECT * FROM [table] WHERE %and', $where);
// SELECT * FROM [table] WHERE [age] > 20 AND [email] IS NOT NULL

nebo 

$where['age'] = 20;
$where['email'] = 'franta@example.com';
dibi::query('SELECT * FROM [table] WHERE %and', $where);
// SELECT * FROM [table] WHERE [age]=20 AND [email]='franta@example.com'

Limity a ofsety:

// with limit = 30, offset = 90
dibi::query('SELECT * FROM [products] %lmt %ofs', 30, 90);
// SELECT * FROM [products] LIMIT 30 OFFSET 90

// with offset = 100
dibi::query('SELECT * FROM [products] %ofs', 100);
// pro SQLite:
// SELECT * FROM [products] LIMIT -1 OFFSET 100
// pro MySQL:
// SELECT * FROM [products] LIMIT 18446744073709551615 OFFSET 100
// pro PostgreSQL:
// SELECT * FROM [products] OFFSET 100

Funkčnost modifikátorů %and & %or považujte za experimentální. Očekávám vaše připomínky a podle nich ji případně upravím. Jinak změny si vyžádaly větší zásah do zdrojového kódu dibi-překladače a ačkoliv jsem všechno velmi důkladně otestoval, buďte při nasazování pozorní.

Komentáře

  1. Milan Svoboda #1

    avatar

    Zajímalo by mne, zda je možno kombinovat zadání where podmínek takto

    $where[] = '[age] > 20';
    $where['email'] = 'franta@example.com';

    a ještě jedna věc jak by se kombinovalo ve where podmínce AND a OR, když potřebuju trochu složitější podmínky

    před 9 lety | reagoval [4] Stalker
  2. Taurus #2

    V prvním větě posledního odstavce máš "promile"or místo "procento"or…
    Jinak pěkný, zvlášť query ve stylu printf :-)

    před 9 lety
  3. Šmoula #3

    Šikla by se mi v dibi funkce, která takto hezky poskládaný řetězec dotazu vrátí jako string, nic víc, nic miň.

    před 9 lety | reagoval [16] marek
  4. Stalker http://www.esentio.sk #4

    #1 Milane Svobodo, Tiež by ma zaujímali tie zložitejšie podmienky. Že by nejaké vnorené polia?

    PS: Ten faraón sa podaril ;)

    před 9 lety
  5. Damien #5

    Mě tak napadá, co takhle pro dibi udělat Wiki? ;)

    před 9 lety | reagoval [6] Arcao
  6. Arcao http://arcao.com #6

    avatar

    #5 Damiene, Souhlas, přeci jenom je lepší se hrabat ve Wiki, než hledat to v nějakých zalezlých spotech.

    před 9 lety
  7. papi http://ctenari.cz #7

    avatar

    Ta wiki by určitě bodla. Bylo by to přehlednější. Nicméně bych občas uvítal i trochu složitější příklady dotazů. Přeji hodně zdarů, jde to dobrým směrem.

    před 9 lety
  8. Damien #8

    Na googlecode ta WiKi k projektu je, stačí ji rozchodit ;)

    před 9 lety
  9. Techi http://techi.name #9

    avatar

    Mě prostě připadá dibi jako takový pseudoframework, kde se autor potřebuje pochlubit (nic ve zlém), co se mu povedlo vymyslet a napodobit z jiných frameworků
    A hromada začínajících programátorů jenom hltá a uznale kývá hlavou. Ale proč ne, aspoň se něco naučí.
    Co mi chybí je vývoj více lidí a nějaký viditelný progress.
    Zkrátka se mi zdá zbytečné vytvářet další framework, když jich je několik velmi známých a prověřených jako symfony, cake a kralující Zend.
    (Autor komentáře je členem ZF komunity :o] )

  10. Jan Škrášek http://hrach.netuje.cz #10

    avatar

    #9 Techi,

    • heh, tak dibi rozhodně není framework, to už spíš nette, ne?
    • progress? podle toho ty poznáváš, že je něco kvalitní
    • kdo tu kývá?
    • zbytečné? to je spíš asi napsaní tvého komentáře :D

    nic ve zlom ;)

    před 9 lety
  11. al #11

    #9 Techi, Nevim jestli a jak moc pozorne sledujete vyvoj Nette, ale ja osobne jsem si zadneho chlubeni nevsiml. Ceho jsem si ale vsiml hned, je kvalita kodu a hlavne kvalita myslenky se kterou to dgx pise. Pokud by tedy chtel, tak se rozhodne cim chlubit ma a my ostatni mu muzeme byt vdecni, ze se s nami o tyto veci podeli (rozdeli).

    před 9 lety
  12. Whitek http://www.clevis.cz #12

    avatar

    diky za or a and (ja si je v nouzi napsal do verze 0.6e sam, ale mam to radeji z „vyssi moci“ :-) ).

    před 9 lety
  13. David Grudl http://davidgrudl.com #13

    avatar

    #9 Techi, výborně, hledám nějakého zastánce, který žije a dýchá jen pro ten jediný Zend Framework, a se kterým bych si to mohl „rozdat“. Úkolem by bylo napsat jednoduchou totožnou aplikaci, každý v tom svém prostředí. Hned bude jasno, kdo drží trumfy a má setsakramentsky navrch :-)

    před 9 lety | reagoval [14] Tomik [20] veena
  14. Tomik http://tomik.jmx.cz #14

    avatar

    #13 Davide Grudle, To vůbec není špatný nápad. Už jsi něco naznačil na první PHP konferenci, že bys chtěl něco podobného udělat. Jsem pro! Určitě by to bylo mnohem relevantnější měřítko něž nějaký „progress“. :-)

    P.S.: Abych nebyl špatně pochopen, neovládám Zend natolik, abych se Ti s ním stavil do cesty, ale pokud by se někdo rozhodl si to s Tebou a nette rozdat, určitě bych tu akci podporoval! :-)

    před 9 lety | reagoval [15] CZNeo
  15. CZNeo #15

    avatar

    #14 Tomiku, doba pokročila, nyní si samci budou přeměřovat dobu zpracování a délku skriptů

    před 9 lety
  16. marek http://automoto.newspoint.cz #16

    avatar

    #3 Šmoulo, mno tak poslední koment mi tu byl smazán, ale našel jsem to jako dibi::test()

    před 9 lety | reagoval [17] David Grudl
  17. David Grudl http://davidgrudl.com #17

    avatar

    #16 marku, houby smazán, první odeslání je jenom náhled. Kolik lidí si pak myslí, že jim mažu komentáře, když je ve skutečnosti vůbec neodeslali…

    před 9 lety | reagoval [18] marek
  18. marek http://automoto.newspoint.cz #18

    avatar

    #17 Davide Grudle, já vím, ale asi jsem tupec :) omlouvám se…

    před 9 lety | reagoval [19] David Grudl
  19. David Grudl http://davidgrudl.com #19

    avatar

    #18 marku, mně se to už stalo taky. To nebyla výtka, jen zamyšlení.

    před 9 lety
  20. veena #20

    #13 Davide Grudle,
    chlapi pozor dáváte mi námět na téma další php konference ;-)

    před 9 lety

Tento článek byl uzavřen. Už není možné k němu přidávat komentáře.