Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 查询生成器分组依据,具有,在Laravel中计数_Mysql_Laravel_Eloquent_Query Builder_Laravel 6 - Fatal编程技术网

Mysql 查询生成器分组依据,具有,在Laravel中计数

Mysql 查询生成器分组依据,具有,在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)', '<

如何在查询生成器中表达此代码。我用的是拉威尔6

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
    ]
]