mirror of
https://github.com/knex/knex.git
synced 2025-12-28 23:48:58 +00:00
Merge branch 'bugfix/make_raw_backwards_compatible' of https://github.com/wubzz/knex into wubzz-bugfix/make_raw_backwards_compatible
This commit is contained in:
commit
5ebbeb07b4
15
index.html
15
index.html
@ -2155,6 +2155,21 @@ knex('users')
|
||||
}))
|
||||
</pre>
|
||||
|
||||
<p>For simpler queries where one only has a single binding, <tt>.raw</tt> can accept said binding as its second parameter.</p>
|
||||
|
||||
<pre class="display">
|
||||
knex('users')
|
||||
.where(
|
||||
knex.raw('LOWER("login") = ?', 'knex')
|
||||
)
|
||||
.orWhere(
|
||||
knex.raw('accesslevel = ?', 1)
|
||||
)
|
||||
.orWhere(
|
||||
knex.raw('updtime = ?', new Date())
|
||||
)
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
To prevent replacement of <tt>?</tt> one can use escape sequence <tt>\\?</tt>.
|
||||
</p>
|
||||
|
||||
@ -6,6 +6,7 @@ var EventEmitter = require('events').EventEmitter
|
||||
var assign = require('lodash/object/assign')
|
||||
var reduce = require('lodash/collection/reduce')
|
||||
var isPlainObject = require('lodash/lang/isPlainObject')
|
||||
var _ = require('lodash');
|
||||
|
||||
function Raw(client) {
|
||||
this.client = client
|
||||
@ -26,7 +27,8 @@ assign(Raw.prototype, {
|
||||
set: function(sql, bindings) {
|
||||
this._cached = undefined
|
||||
this.sql = sql
|
||||
this.bindings = bindings
|
||||
this.bindings = (_.isObject(bindings) || _.isUndefined(bindings)) ? bindings : [bindings]
|
||||
|
||||
return this
|
||||
},
|
||||
|
||||
|
||||
@ -3131,4 +3131,42 @@ describe("QueryBuilder", function() {
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
it('#965 - .raw accepts Array and Non-Array bindings', function() {
|
||||
var expected = function(fieldName, expectedBindings) {
|
||||
return {
|
||||
mysql: {
|
||||
sql: 'select * from `users` where ' + fieldName + ' = ?',
|
||||
bindings: expectedBindings
|
||||
},
|
||||
mssql: {
|
||||
sql: 'select * from [users] where ' + fieldName + ' = ?',
|
||||
bindings: expectedBindings
|
||||
},
|
||||
default: {
|
||||
sql: 'select * from "users" where ' + fieldName + ' = ?',
|
||||
bindings: expectedBindings
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
//String
|
||||
testsql(qb().select('*').from('users').where(raw('username = ?', 'knex')), expected('username', ['knex']));
|
||||
testsql(qb().select('*').from('users').where(raw('username = ?', ['knex'])), expected('username', ['knex']));
|
||||
|
||||
//Number
|
||||
testsql(qb().select('*').from('users').where(raw('isadmin = ?', 0)), expected('isadmin', [0]));
|
||||
testsql(qb().select('*').from('users').where(raw('isadmin = ?', [1])), expected('isadmin', [1]));
|
||||
|
||||
//Date
|
||||
var date = new Date(2016, 0, 5, 10, 19, 30, 599);
|
||||
var sqlUpdTime = '2016-01-05 10:19:30.599';
|
||||
testsql(qb().select('*').from('users').where(raw('updtime = ?', date)), expected('updtime', [date]));
|
||||
testsql(qb().select('*').from('users').where(raw('updtime = ?', [date])), expected('updtime', [date]));
|
||||
testquery(qb().select('*').from('users').where(raw('updtime = ?', date)), {
|
||||
mysql: 'select * from `users` where updtime = \'' + sqlUpdTime + '\'',
|
||||
default: 'select * from "users" where updtime = \'' + sqlUpdTime + '\''
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user