nette / database

💾 A database layer with a familiar PDO-like API but much more powerful. Building queries, advanced joins, drivers for MySQL, PostgreSQL, SQLite, MS SQL Server and Oracle.
https://doc.nette.org/database
Other
492 stars 105 forks source link

better support for BETWEEN clause #297

Open 8ctopus opened 1 year ago

8ctopus commented 1 year ago

Currently BETWEEN is supported using database::literal, such as in this query:

$sql = <<<SQL
    SELECT
        *
    FROM
        test
    WHERE
SQL;

$rows = $database->query($sql, [
    $database::literal('id BETWEEN ? AND ?', 1, 2),
]);

It would be even nicer if it worked like this:

$sql = <<<SQL
    SELECT
        *
    FROM
        test
    WHERE
SQL;

$rows = $database->query($sql, [
    'id BETWEEN' => [1, 2],
]);

Now when it sees that the value is an array ([1, 2]), it automatically switches to IN.

https://github.com/nette/database/blob/master/src/Database/SqlPreprocessor.php#L285-L293)