Php 拉威尔获得最受欢迎的产品

Php 拉威尔获得最受欢迎的产品,php,sql,laravel-4,Php,Sql,Laravel 4,我有两个表,一个是产品表,另一个是收藏夹表,为了保持简单,我显示了相关的行 表格poducts 身份证 表格收藏夹IT 查询中不需要用户\u id 产品标识 我想要的是在Favorit表中找到最常见的前10种产品。我想我必须这么做 favourit::groupBy(product_id) 及 但是,我如何获得要订购的amount(所有产品标识的总和)?此外,此查询(带有groupby)是否可以与products表联接,以便我在一个查询中获得产品?从SQL的角度来看,这是如何从fa

我有两个表,一个是产品表,另一个是收藏夹表,为了保持简单,我显示了相关的行

表格poducts

身份证


表格收藏夹IT

查询中不需要用户\u id

产品标识


我想要的是在Favorit表中找到最常见的前10种产品。我想我必须这么做

   favourit::groupBy(product_id) 


但是,我如何获得要订购的amount(所有产品标识的总和)?此外,此查询(带有groupby)是否可以与products表联接,以便我在一个查询中获得产品?

SQL
的角度来看,这是如何从favorit表中获得前10个产品的:

Select TOP 10
    Product_id
    ,COUNT(Product_id) as [Count]
From
    favorit
Group By
    Product_id
Order By
    COUNT(Product_id) desc
这将为您提供前10个产品标识,并以最高计数对其进行排序


我不太熟悉
PHP
,因此我无法告诉您如何实现它,抱歉:(

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

favourit::select('product_id', DB::raw('COUNT(product_id) as count'))
->groupBy('product_id')
->orderBy('count', 'desc')
->take(10);
那么,我不知道如何与你们的产品建立关系

编辑:如果在产品模型中设置了关系,则应该能够使用with()函数连接产品表:

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