首页 > 解决方案 > 如何解决 PHP Laravel 项目的语法错误或访问冲突?

问题描述

我有两个表,分别是声明表和声明类型表。目前,我想在 claim_type 表中获取声明的名称。所以,从Claim表中,我们会得到声明的类型(以id的形式),然后,我们可以得到类型的名称。我已经像这样在 MySQL 工作台中查询过它。

SELECT claim_types.name, count(*), sum(amount) FROM myteduh_v1.claims 
join claim_types on claim_type_id = claim_types.id
group by claim_type_id;

当我发布到 PHP 时,查询它如下所示。事实证明有些错误。

$ClaimsType = ClaimType::pluck('name')
                ->count()
                ->join('claim_types','claim_type_id','=', 'claim_types.id')
                ->groupBy('claim_type_id')
                ->get();

dd($ClaimsType);

$Claims_pie_chart = Charts::create('pie', 'highcharts')
         ->title('Total Claims Based On Type of Claims')
         ->labels(['$ClaimsType'])
         ->values([15,25,50])
         ->dimensions(1000,500)
         ->responsive(true);

之后,我想将标签插入$ClaimsType到标签变量中作为饼图标签。问题是,我在 PHP 控制器中查询数据库的方式是否错误?

标签: javascriptphpmysqldatabaselaravel

解决方案


如果你想在一个查询中使用聚合,你应该DB:raw()在 select 中使用

$ClaimsType = Claim::select(['claim_types.name', DB:raw('count(*)'), DB:raw('sum(amount)')])
                ->join('claim_types','claim_type_id','=', 'claim_types.id')
                ->groupBy('claim_type_id')
                ->get();

现在您可以使用->toSql()instad of ->get(),您将看到该查询与您的原始查询相同。


推荐阅读