Mysql Laravel雄辩获得重复次数最多的10个产品

Mysql Laravel雄辩获得重复次数最多的10个产品,mysql,laravel,Mysql,Laravel,我有一个包含发票的export\u invoices表 +----+----------------+ | id | title | +----+----------------+ | 1 | First Invoice | +----+----------------+ | 2 | Second Invoice | +----+----------------+ 以及与出口发票相关的已售出产品 +----+-------------------+-----------

我有一个包含发票的
export\u invoices

+----+----------------+
| id | title          |
+----+----------------+
| 1  | First Invoice  |
+----+----------------+
| 2  | Second Invoice |
+----+----------------+
以及与出口发票相关的已售出产品

+----+-------------------+------------+
| id | export_invoice_id | product_id |
+----+-------------------+------------+
| 1  | 1                 | 1          |
+----+-------------------+------------+
| 2  | 1                 | 1          |
+----+-------------------+------------+
| 3  | 1                 | 2          |
+----+-------------------+------------+
| 4  | 2                 | 1          |
+----+-------------------+------------+
| 5  | 2                 | 1          |
+----+-------------------+------------+
我期望得到的是:

我希望得到
product\u id=1重复2次
product\u id=2重复1次


这意味着发票中重复产品的频率。

最简单的方法是从产品方面着手,假设您在产品和发票之间建立了关系

+----+----------------+
| id | title          |
+----+----------------+
| 1  | First Invoice  |
+----+----------------+
| 2  | Second Invoice |
+----+----------------+
$products=App\Product::withCount('export_invoices')->get();
这将返回所有产品的集合,每个产品都有一个名为
export\u invoices\u count
的属性,该属性说明该产品出现在其中的出口发票数量。然后,您可以按
导出发票\u计数
对该集合进行排序,并取前10个

$top_ten = $products->sortByDesc('export_invoices_count')->take(10);

您尝试过解决这个问题吗?如果是重复次数最多的3种产品,您会如何解决?此退货
出口发票\u计数器
始终等于
1