Laravel是最受欢迎的产品

时间:2014-07-16 13:56:02

标签: php sql laravel-4

我有两个表,一个有产品,一个有利于保持简单,我会显示相关的行。

表格产品

ID


table favourit

查询中不需要

user_id

PRODUCT_ID


我想要的是在favourit表中找到最常见的十大产品。我想我必须这样做

   favourit::groupBy(product_id) 

   favourit::orderBy(ammount(sum of all product_ids), desc)

但是我怎么能得到ammount(所有product_ids的总和)来订购?此查询(使用groupby)也可以与products表连接,以便我在一个查询中获得产品吗?

2 个答案:

答案 0 :(得分:2)

您应该能够像这样编写查询: 这是Caveman42 Sql查询的改编。

favourit::select('product_id', DB::raw('COUNT(product_id) as count'))
->groupBy('product_id')
->orderBy('count', 'desc')
->take(10);

然后,我不确定如何与您的产品建立关系。

编辑:如果您的产品型号中设置了您的关系。您应该能够使用with()函数加入product表:

favourit::with('product')
->select('product_id', DB::raw('COUNT(product_id) as count'))
->groupBy('product_id')
->orderBy('count', 'desc')
->take(10);

答案 1 :(得分:0)

SQL的角度来看,这就是您从偏好表中获得前10名产品的方式:

Select TOP 10
    Product_id
    ,COUNT(Product_id) as [Count]
From
    favorit
Group By
    Product_id
Order By
    COUNT(Product_id) desc

这将为您提供前10个Product_id,并在最高位置对它们进行排序。

我对PHP不太熟悉,所以我无法告诉你如何实施它,抱歉:(