查询生成器laravel中的算术运算 [英] arithmetic operations in query builder laravel

查看:479
本文介绍了查询生成器laravel中的算术运算的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在laravel 5.4的查询构建器中对该查询进行预设置

i want to prerform this query in query builder of laravel 5.4

select title, price,  price*tauxDiscount/100 as newPrice
from products p, hasdiscount pd, discounts d
WHERE p.idProd = pd.idProd
and d.idDiscount = pd.idDiscount
and now() BETWEEN dateStart and dateEnd

所以我写这个

$products =  DB::table('products')
        ->join('hasDiscount', 'products.idProd', '=', 'hasDiscount.idProd')
        ->join('discounts', 'discounts.idDiscount', '=', 'hasDiscount.idDiscount')
        ->select('products.*', '(products.price * discounts.tauxDiscount / 100) as newPrice')
        ->get();

但是他显示了这个错误

[SQLSTATE[42S22]: Column not found: 1054 Unknown column '(products.price 
* discounts.tauxDiscount / 100)' in 'field list' (SQL: select 
`products`.*, `(products`.`price * discounts`.`tauxDiscount / 100)` as 
`newPrice` from `products` inner join `hasDiscount` on 
`products`.`idProd` = `hasDiscount`.`idProd` inner join `discounts` on 
`discounts`.`idDiscount` = `hasDiscount`.`idDiscount`)][1]

推荐答案

您需要使用原始表达式:

You need to use raw expression like that :

$products =  DB::table('products')
        ->join('hasDiscount', 'products.idProd', '=', 'hasDiscount.idProd')
        ->join('discounts', 'discounts.idDiscount', '=', 'hasDiscount.idDiscount')
        ->select(DB::raw('products.*,(products.price * discounts.tauxDiscount/100) as newPrice'))
        ->get();

https://laravel.com/docs/5.4/queries#raw-expressions

这篇关于查询生成器laravel中的算术运算的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆