Mysql 查询生成器分组依据,具有,在Laravel中计数
如何在查询生成器中表达此代码。我用的是拉威尔6Mysql 查询生成器分组依据,具有,在Laravel中计数,mysql,laravel,eloquent,query-builder,laravel-6,Mysql,Laravel,Eloquent,Query Builder,Laravel 6,如何在查询生成器中表达此代码。我用的是拉威尔6 SELECT * FROM feedback GROUP BY noTicket having count(`status`) < 2 从反馈组中按计数(`status`)小于2的通知项选择* 我的代码: $feedback = DB::table('feedback') ->groupBy('noTicket') ->having('count(status)', '<
SELECT * FROM feedback GROUP BY noTicket having count(`status`) < 2
从反馈组中按计数(`status`)小于2的通知项选择*
我的代码:
$feedback = DB::table('feedback')
->groupBy('noTicket')
->having('count(status)', '<', 2)
->get();
$feedback=DB::table('feedback')
->groupBy('noTicket')
->有('count(status)',这是查询的工作版本
select noTicket
from feedback
group by noTicket
having count(status) < 2;
选择noTicket
来自反馈
按通知分组
计数(状态)<2;
这是查询生成器
return DB::table('feedback')
->groupBy('noTicket')
->having(DB::raw('count(status)'), '<', 2)
->pluck('noTicket'); // you may replace this with get()/select()
returndb::table('feedback'))
->groupBy('noTicket')
->这里有(DB::raw('count(status)'),“完整的代码。非常感谢Ersoy
$getArray = DB::table('feedback')
->groupBy('noTicket')
->having(DB::raw('count(status)'), '<', 2)
->pluck('noTicket');
$feedback = DB::table('feedback')
->whereIn('noTicket', $getArray)->get();
$getArray=DB::table('feedback')
->groupBy('noTicket')
->具有(DB::raw('count(status)'),'
还有严格模式,您可以在config/database.php中禁用它
'connections' => [
'mysql' => [
'strict' => false
]
]
但我不建议您这样做。在此处选中此项,您将获得有关分组方式的更多信息。除非您按所有列分组,选择*
和分组方式
无效且毫无意义。此外,我怀疑是否存在列计数(状态)
。您试图通过查询实现什么?@party ring:此mysql查询已经在Navicat上测试过,并且运行良好。我想对所有相同的Noticet进行分组,并选择状态<2的Noticet。@Ikra请共享您的表结构、复制它的示例数据和预期结果。您的查询不兼容,因为存在分组依据。@Ersoy:My ticketing的概念是,如果有人创建了票证并进行了回复,它将存储在反馈表中。状态为1的新票证,状态为2的已分配票证。我只想显示状态为1且尚未分配的新票证。因为1通知可以有多个响应,状态将从1(等待响应)生成,2(进行中)、3(完成)、4(关闭)示例noTicket=4-->我的窗口被破坏-->状态=1 noTicket=4-->确定我们将检查并修复-->状态=2,因此noTicket=4不能以几乎正确的新票证显示。输出正确,但不显示所有数据。输出在数组中。如果使用Pull,输出为[2,3]这是noTicket=2和noTicket=3。如果使用get,则输出为[noTicket=2,noTicket=3]。如回答中所述,在此之前谢谢您,您可以使用->get('noTicket')
或->select('noTicket')->get()
。如果您不这样做,查询生成器将假定您想选择*
@Ikra-也有Hazem指出-我附加了可选选项作为注释来回答。这取决于您想显示的方式。@HazemMohamed:是的,我已经尝试了所有可选选项作为注释。如果我只使用->get
和->pull,我会出错
。另一方面,如果我使用->get('noTicket')
则结果是数组ex:[2,3,5]。因此我需要选择数组中的位置。有没有简单的方法获取所有数据?谢谢before@Ersoy:当我使用->get()
,->pulk()
,->select()
时出错。如果我使用->get,则没有错误('noTicket
)或->pulk('noTicket')
但结果不会显示所有数据。如果使用->select('noTicket')
没有错误,但会按我不希望的方式获取数据。因此我使用pulk('noTicket')
获取值,然后需要选择数组中的位置来检索所有数据。有没有简单的方法获取所有数据?谢谢。。
$feedback = DB::table('feedback')
->selectRaw('feedback.*, count(status) as count_status')
->groupBy('noTicket')
->havingRaw('count(status) > ?', [2])
->get();
'connections' => [
'mysql' => [
'strict' => false
]
]