查询构建器 GROUP BY,HAVING,COUNT in Laravel
Query builder GROUP BY, HAVING, COUNT in Laravel
如何在查询生成器中表达此代码。我正在使用 Laravel 6.
SELECT * FROM feedback GROUP BY noTicket having count(`status`) < 2
我的代码:
$feedback = DB::table('feedback')
->groupBy('noTicket')
->having('count(status)', '<', 2)
->get();
错误代码:
SQLSTATE[42000]: Syntax error or access violation: 1055 'sifora.feedback.idFeedback' isn't in GROUP BY
(SQL: select * from `feedback` group by `noTicket` having `count(status)` < 2)
我的代码有什么问题? sql 代码与查询生成器之间似乎匹配。
谢谢
这是查询的工作版本
select noTicket
from feedback
group by noTicket
having count(status) < 2;
这是查询生成器;
return DB::table('feedback')
->groupBy('noTicket')
->having(DB::raw('count(status)'), '<', 2)
->pluck('noTicket'); // you may replace this with get()/select()
这里是完整的代码。非常感谢 Ersoy
$getArray = DB::table('feedback')
->groupBy('noTicket')
->having(DB::raw('count(status)'), '<', 2)
->pluck('noTicket');
$feedback = DB::table('feedback')
->whereIn('noTicket', $getArray)->get();
$feedback = DB::table('feedback')
->selectRaw('feedback.*, count(status) as count_status')
->groupBy('noTicket')
->havingRaw('count(status) > ?', [2])
->get();
还有严格模式,你可以在config/database.php
中禁用它
'connections' => [
'mysql' => [
'strict' => false
]
]
但我不建议你这样做。在此处查看此 https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html 以获得更多信息,了解分组方式的工作原理。
如何在查询生成器中表达此代码。我正在使用 Laravel 6.
SELECT * FROM feedback GROUP BY noTicket having count(`status`) < 2
我的代码:
$feedback = DB::table('feedback')
->groupBy('noTicket')
->having('count(status)', '<', 2)
->get();
错误代码:
SQLSTATE[42000]: Syntax error or access violation: 1055 'sifora.feedback.idFeedback' isn't in GROUP BY
(SQL: select * from `feedback` group by `noTicket` having `count(status)` < 2)
我的代码有什么问题? sql 代码与查询生成器之间似乎匹配。
谢谢
这是查询的工作版本
select noTicket
from feedback
group by noTicket
having count(status) < 2;
这是查询生成器;
return DB::table('feedback')
->groupBy('noTicket')
->having(DB::raw('count(status)'), '<', 2)
->pluck('noTicket'); // you may replace this with get()/select()
这里是完整的代码。非常感谢 Ersoy
$getArray = DB::table('feedback')
->groupBy('noTicket')
->having(DB::raw('count(status)'), '<', 2)
->pluck('noTicket');
$feedback = DB::table('feedback')
->whereIn('noTicket', $getArray)->get();
$feedback = DB::table('feedback')
->selectRaw('feedback.*, count(status) as count_status')
->groupBy('noTicket')
->havingRaw('count(status) > ?', [2])
->get();
还有严格模式,你可以在config/database.php
中禁用它'connections' => [
'mysql' => [
'strict' => false
]
]
但我不建议你这样做。在此处查看此 https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html 以获得更多信息,了解分组方式的工作原理。