书架更改列数据类型
Bookshelf change column data type
我正在使用 bookshelf.js,我想更改数据类型列,这是我想要做的示例。
select * from table where date(datetime_col) = '2017-03-14'
datatime_col 是 DATETIME,我想转换成日期来执行查询。
这就是我在书架上尝试做的事情
var Model = new model().query(function (qb) {
qb.where('date(datetime_col)', '=' , date);
}).fetchAll()
这是我在尝试执行上面的代码时出现的错误
Error: ER_BAD_FIELD_ERROR: Unknown column 'date(datetime_col)' in 'where clause'
这是一个完整的示例,您如何使用 knex.raw 和书架进行查询感谢您的回答。
在带有日期时间列的两个日期之间使用
var Model = new model().query(function (qb) {
qb.whereBetween( Bookshelf.knex.raw("DATE(colum_datetime)"), [date_var1, date_var2]);
}).fetchAll( { withRelated: ['table1', 'table2', {'table3':function (qb) {
qb.orderBy('date_column', 'desc')
}},'table4'] });
使用
var Model = new model().query("where", Bookshelf.knex.raw("DATE(colum_datetime)"), "=", date_var).fetchAll( { withRelated: ['table1', 'teble2', {'table3':function (qb) {
qb.orderBy('date_column', 'desc')
}},'table4'] });
看起来 "bookshelf.js" 或基础 "knex" 期望获得模型的属性名称(如 datetime_col
),而不是 sql 片段喜欢 date(datetime_col)
。
根据this source,您需要传递函数为"raw" sql的部分。
建议的方案是这样写:
model.query("where", Bookshelf.knex.raw("DATE(field) = ?"), "2017-03-04"))
我正在使用 bookshelf.js,我想更改数据类型列,这是我想要做的示例。
select * from table where date(datetime_col) = '2017-03-14'
datatime_col 是 DATETIME,我想转换成日期来执行查询。
这就是我在书架上尝试做的事情
var Model = new model().query(function (qb) {
qb.where('date(datetime_col)', '=' , date);
}).fetchAll()
这是我在尝试执行上面的代码时出现的错误
Error: ER_BAD_FIELD_ERROR: Unknown column 'date(datetime_col)' in 'where clause'
这是一个完整的示例,您如何使用 knex.raw 和书架进行查询感谢您的回答。
在带有日期时间列的两个日期之间使用
var Model = new model().query(function (qb) {
qb.whereBetween( Bookshelf.knex.raw("DATE(colum_datetime)"), [date_var1, date_var2]);
}).fetchAll( { withRelated: ['table1', 'table2', {'table3':function (qb) {
qb.orderBy('date_column', 'desc')
}},'table4'] });
使用
var Model = new model().query("where", Bookshelf.knex.raw("DATE(colum_datetime)"), "=", date_var).fetchAll( { withRelated: ['table1', 'teble2', {'table3':function (qb) {
qb.orderBy('date_column', 'desc')
}},'table4'] });
看起来 "bookshelf.js" 或基础 "knex" 期望获得模型的属性名称(如 datetime_col
),而不是 sql 片段喜欢 date(datetime_col)
。
根据this source,您需要传递函数为"raw" sql的部分。 建议的方案是这样写:
model.query("where", Bookshelf.knex.raw("DATE(field) = ?"), "2017-03-04"))