在哪里对Laravel进行Raw查询?

时间:2018-11-25 11:00:36

标签: mysql laravel

嗨,在这种情况下,我很难获得正确的查询。

我如何让所有拥有3个客户的用户。

Costumers表:

/cust

查询中的预期结果应该是ID为1和2的用户。

我已经尝试过在“ Laravel”中使用“ whereRaw”,但我无法理解。

2 个答案:

答案 0 :(得分:1)

您可以将GROUP BYHAVING子句一起用于条件过滤:

要查找某个用户的客户总数,我们可以使用COUNT(DISTINCT customer_id)来计算唯一的客户数。

SELECT user_id
FROM your_table
GROUP BY user_id
HAVING COUNT(DISTINCT customer_id) = 3 

注意:

  • 如果表结构确保(user_id, customer_id)的组合为UNIQUE;那么您可以使用COUNT(*)代替COUNT(DISTINCT customer_id)
  • 如果您要寻找具有至少三个客户的用户,则可以在条件中使用>= 3

答案 1 :(得分:1)

使用groupBy()和havingRaw()

User::select(['user_id'])
->groupBy('user_id')
->havingRaw('COUNT(DISTINCT customer_id) >= 3')
->get();

这将返回具有3个或更多客户ID的用户ID