【问题标题】:Laravel and ChartJS - Trying to get count of arrayLaravel 和 ChartJS - 尝试获取数组计数
【发布时间】:2025-12-31 11:35:10
【问题描述】:

我正在尝试从我的 MySQL 数据库创建一个图表以在 Laravel 中使用。

为了测试图表,我输入了一个类似 [1, 2, 3, 4, 5] 的数组,它运行良好。但是当我尝试从我的数据库中获取数据时,它不起作用。我有一个包含以下字段的数据库:

id  
project  
stage  
status  
timestamps

我想在图表中显示的是每个阶段的项目数量。所以阶段是:

Waiting to Start  
In Progress  
Waiting for Information  
Pre-Launch  
Launched

我的查询如下:

$total = Project::all()->groupBy('stage')->count('stage');

那行不通。我尝试了其他几个查询,但不确定如何获取每个阶段的项目数量并将其输出到数组。另外,想按特定顺序获取数据,这些数据不是按字母顺序排列的,也不能使用 orderBy 等。

感谢您的帮助。

【问题讨论】:

    标签: mysql laravel group-by eloquent


    【解决方案1】:

    试试这个方法:

    $total = Project::groupBy('stage')->get();
    

    然后循环遍历每个阶段,得到count()

    【讨论】:

    • 我想这就是我遇到麻烦的地方。我将如何循环并获得计数? foreach ($total as $t) { $t->count(); } 不起作用。
    • 它没有为我提供每个阶段的计数。只说1。
    【解决方案2】:

    所以经过多次尝试和错误,我决定将我的 JS 代码直接放在刀片文件中,而不是从外部引入。

    当我这样做时,

    data: {{ $t }}
    

    完美运行。

    我不确定为什么它直接在刀片文件中时有效,但在我包含它时无效。我确保它在 jQuery 之后加载,所以仍然不知道为什么。

    有什么想法吗?

    【讨论】: