Version: v0.8.1 - Beta.  We welcome contributors & feedback.

Db.selectRows

Db.selectRows($sql, $whereMap={}) -> list

Description

Return the result of a SQL 'select' statement as a List of Maps.

Each Map represents one row of the result.

Note: A value will be converted to a Date object if it is a date/time column type, or if the column name ends in “date”.

$query = sql'SELECT id, name FROM users ORDER BY name'

$users = Db.selectRows($query)

// [
//     { id: 1, name: 'ann' }
//     { id: 3, name: 'bob' }
//     { id: 2, name: 'cody' }
// ]

foreach $users as $user {
    print($user.name)
}

//= 'ann'
//= 'bob'
//= 'cody'

Where Map 

If $whereMap is given, a dynamic WHERE clause will be appended to the query.

In addition to column names, keys can include limit, orderBy, and orderByDesc.

$where = {
    isDeleted: 0
    'publishDate >': Date.create('1 year ago')
    orderByDesc: 'publishDate'
    limit: 10
}

Db.selectRows('SELECT * FROM posts', $where)

// Runs Query:
//   SELECT * FROM posts
//   WHERE isDeleted = 0
//   AND publishDate > '2020-06-13 00:00:00'
//   ORDER BY publishDate DESC
//   LIMIT 10

Where In Values 

You can pass a list of values for a where in query, like this:

$sql = sql'''
    SELECT * FROM products
    WHERE productId IN ({productIds})
'''

$sql.fill({ productIds: [11, 22, 33] })

You can also pass it in via $whereMap.

$whereMap = { 'productId in': [11, 22, 33] }
Db.selectRows(sql'SELECT * FROM products', $whereMap)

See Also 

See Also