我正在尝试使用Laravel和查询生成器推断价格在1到最高产品价格之间的产品数量。
我尝试在phpmyadmin中使用此查询,它返回一个结果:
SELECT product_id , count( user_id ) , sum( monies )
FROM products, prices
WHERE monies
BETWEEN '20'
AND products.price
AND products.id = 101
GROUP BY (product_id);
但是在PHP中,我不指定要搜索的范围:
$data = Product::join('prices', 'prices.product_id', '=', 'products.id')
->select(DB::raw('count( user_id ) as nombre'),DB::raw('sum(monies ) as sum'))
->where('prices.project_id', '=', '101')
->whereBetween('monies', array(1, 'products.price'))
->groupBy('prices.product_id')
->get();
但是我总是得到一个空结果,当我用
whereBetween('monies', array(1, 'products.price'))
更改whereBetween('monies', array(1, 1000))
时,它将返回结果。如何使用
whereBetween
? 最佳答案
whereBetween
要求values数组的第二个元素是静态值或变量,但不能是表中的列。您可以使用两个whereRaw
语句(没有whereBetweenRaw
等效项),将它们一起使用将创建和and
条件,即:
->whereRaw('monies >= 1')->whereRaw('monies <= products.price')
DB::raw
在这种情况下不起作用,两个常规的where
子句也不起作用。