tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

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

podmínka pomocí kombinace modifikátorů %and a %or

před 9 lety

BigCharlie
Člen | 267

Snažím se získat dotaz, který bude podobný něčemu takovémuto:

<?php
SELECT * FROM xy WHERE (a like '%xx%' OR b like '%xx%') AND (c = 54)
?>

Jde podmínka zapsat kombinací modifikátorů do pole? Něco jako

<?php
$q->where('%and', array(
    '%or' => array(
        "a like '%xx%'",
        "b like '%xx%'",
    ),
    array(
        'c = 54'
    ),
));
?>

před 9 lety

BigCharlie
Člen | 267

Tak jsem to zatím obešel tímto způsobem:

<?php
$q->where('(%or)', array(
        "a like '%xx%'",
        "b like '%xx%'",
    )
);
$q->and('c = %i', 54);
?>

Což funguje podle očekávání, netušil jsem totiž, že modifikátory nevyžadují být okamžitě následovány proměnnou.

Ale pokud někoho napadá jiné řešení, stále naslouchám, u modifikátorů člověk s učením nikdy neskončí.

Edit: pokud je někde v poli chyba zápisu, nekamenujte mě, píšu to z hlavy tak, aby byl jasný smysl.

Editoval BigCharlie (19. 4. 2010 15:27)

před 9 lety

David Grudl
Nette Core | 6806

V podstatě stačí tam nedávat ty klíče:

->where('%and', array(
    array('%or', array(
        "a like '%xx%'",
        "b like '%xx%'",
    )),
    array(
        'c = %i', 54,
    ),
));