Laravel 如何按月份对检索到的行进行分组?

Laravel 如何按月份对检索到的行进行分组?,laravel,eloquent,Laravel,Eloquent,我正在开发一个应用程序,该应用程序涉及按月对选定行进行分组。我该怎么做呢 $data = Medicals::where("patient_referral.referred_by", "like", "%" . $searchitem . "%") ->leftJoin("patients", "medicals.patients_id", &qu

我正在开发一个应用程序,该应用程序涉及按月对选定行进行分组。我该怎么做呢

  $data = Medicals::where("patient_referral.referred_by", "like", "%" .  $searchitem . "%")
        ->leftJoin("patients", "medicals.patients_id", "=", "patients.id")
        ->join("patient_referral", "medicals.trx_id", "=", "patient_referral.trx_id")
        ->join("tests", "medicals.tests_id", "=", "tests.id")
        ->groupBy(function (Medicals $item) {
            return $item->created_at->format('Y-m');
        })
        ->get();
这就是我得到的错误

错误例外 stripos希望参数1是字符串,对象给定

调用groupBy的方式是用于集合,而不是查询。您需要在get之后移动该groupBy,以便尝试对结果集合进行分组

    ...
    ->get()
    ->groupBy(function ($item) {
        return $item->created_at->format('Y-m');
    });
您调用groupBy的方式是针对集合,而不是查询。您需要在get之后移动该groupBy,以便尝试对结果集合进行分组

    ...
    ->get()
    ->groupBy(function ($item) {
        return $item->created_at->format('Y-m');
    });

您可以使用groupBy中的原始查询在数据库中执行它:

$data = Medicals::where("patient_referral.referred_by", "like", "%" .  $searchitem . "%")
        ...
        ->groupBy(DB::raw('DATE_FORMAT(medicals.created_at, "%Y-%m")'))
        ->get();

您可以使用groupBy中的原始查询在数据库中执行它:

$data = Medicals::where("patient_referral.referred_by", "like", "%" .  $searchitem . "%")
        ...
        ->groupBy(DB::raw('DATE_FORMAT(medicals.created_at, "%Y-%m")'))
        ->get();

您遇到的问题是什么,您的查询是否没有按预期工作?您需要在问题中添加更多信息。如果您遇到错误,请将其添加到您的问题中。这是否有帮助:@Tony我已更新了我的问题您遇到了什么问题,您的查询是否如您所期望的那样工作?您需要在问题中添加更多信息。如果您遇到错误,请将其添加到您的问题中。这是否有帮助:@Tony我已更新了我的问题