基になる knex.js 構文を使用して、bookshelf.js の 2 つの列を乗算しようとしています。
これが私がやりたい純粋なSQLです(少なくともそのselect
部分):
select sum(quantity * price) as sum
from products
inner join orders_products on orders_products.product_id = products.id
inner join orders on orders_products.order_id = orders.id
where orders.id = 1
group by (orders_products.order_id)
これが私のクエリです:
return new Orders().fetch({
withRelated: [{
'sum': function(qb) {
/*
how could I multiplay values here, i.e.
qb.sum('products.price * orders_products.quantity as sum');
*/
qb.sum('products.price as sum');
qb.groupBy('orders_products.order_id');
qb.limit(1);
}
}, 'products', 'owner', 'assignedUsers', 'comments.user']
}).then(function(response) {
return response.toJSON();
});
コードでコメントされているように、実際にこれを行いたいと思います:qb.sum('products.price * orders_products.quantity as sum');
という名前の列がないというエラーが表示されるため、これはもちろん機能しませんproducts.price * orders_products.quantity
。
何か案は?