2

基になる 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

何か案は?

4

0 に答える 0