首页 > 解决方案 > Laravel 8 - 在两个日期之间的一段时间内按月计算重复值

问题描述

我正在使用 Laravel 8 并陷入创建自定义查询返回客户端数据,每个客户端按月访问次数首先这是表结构

客户表有 id 和 name,....等

报告表有 id 、 report_date 和 city 等

report_details 有 id、report_id、client_id、...等

Report 和 report_details 之间的关系是一对一的

我在报告模型中创建一个关系如下

public function reportDetails() {
    return $this->hasOne(reportDetails::class, 'report_id');
}

我想在两个日期之间执行查询,例如在 01-01-2021 和 25-03-2021 之间生成一个 JSON 数组,每个对象都有以下键

client_id、client_name、month、visits_count_by_month

我希望得到以下结果

[
    {
        "client_id": 2,
        "client_name": "John",
        "client_visits: [
            "Jan": 5,
            "Feb": 2,
            "March": 0
        ]
    },

    {
        "client_id": 5,
        "client_name": "Mark",
        "client_visits: [
            "Jan": 2,
            "Feb": 0,
            "March": 0
        ]
    }
]

我编写了以下查询,但我不知道如何自定义它并将其与第三个表客户端链接

$reports = Report::whereBetween('report_date', [$start_date, $end_date])->get();

标签: phpmysqllaravellaravel-8

解决方案


推荐阅读