我正在尝试使用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子句也不起作用。

10-02 16:00