php - 在 eloquent 中构建 SQL 查询

标签 php mysql sql laravel eloquent

我该如何使用 eloquent 在 Laravel 4.2 中编写这个 SQL 查询?

SELECT *
FROM participants
WHERE user_id IN (1, 2) 
GROUP BY convo_id
HAVING count(DISTINCT user_id) = 2
AND count(DISTINCT convo_id) = 1

我已经尝试过了

Participant::whereIn('user_id', $participantIds)
                    ->groupBy('convo_id')
                    ->havingRaw('count(DISTINCT user_id) = '. sizeof($participantIds))
                    ->whereRaw('count(DISTINCT convo_id) = 1')
                    ->get();

但我收到此错误

SQLSTATE[HY000]: General error: 1111 Invalid use of group function (SQL: select * from `participants` where `user_id` in (1, 2, 4) and count(DISTINCT convo_id) = 1 group by `convo_id` having count(DISTINCT user_id) = 3)

最佳答案

我的错误。 whereRaw 也应该具有 Raw。

Participant::whereIn('user_id', $participantIds)
                    ->groupBy('convo_id')
                    ->havingRaw('count(DISTINCT user_id) = '. sizeof($participantIds))
                    ->havingRaw('count(DISTINCT convo_id) = 1')
                    ->get();

关于php - 在 eloquent 中构建 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39240420/

相关文章:

php - 使用 php mysql 计算并显示列中的每个重复值

php - 从生成的 HTML 表中删除一行

java - 如何提高 JDBC 查询执行的性能?

mysql - SQL建表错误

用于显示按日期分组的数据(按天递增)的 MySQL 查询

sql - 如何在 SQL Server 2008 中的字符串之间插入字符?

PHP/MySQL - 在数据库中存储数组

php - 以下查询中的错误是什么?

PHP MYSQL 如果结帐成功,则从数据库中清除购物车数据

mysql - 如何在MySQL中使用join和order by子句生成自增临时字段