当前位置: 首页 > 知识库问答 >
问题:

参数#1($haystack)必须是字符串类型,闭包在Laravel雄辩上给出

孙梓
2023-03-14

我试图在Laravel Elount中组合一个查询,该查询将得到一个描述,然后是与之相关的费率,但也按日期对费率进行分组,我认为我很接近,但我不能完全弄清楚我做错了什么。

我用下面的代码在get()行中得到这个错误;

stripos():参数#1($haystack)必须是string类型,并给定闭包

$ratesbydate = RateDescription::where('company_id', '=', 7)->whereHas('rawrates', function ($query) use ($sub7days) {
     return $query->where('created_at', '>=', $sub7days)->orderByDesc('created_at')->groupBy(function($date) {
           return Carbon::parse($date->created_at)->format('d'); 
     });
})->get();

如果我删除get和output ratesbydate,我就会得到querybuilder。如果我尝试将groupBy更改为“created_at”,它运行正常,但不会按天分组。

有什么想法吗?

谢谢:)

-EDIT-正如Iury Anadão所建议的-我尝试过在get()之后添加group by-它不会太沉重。所以我有这个:

$ratesbydate = RateDescription::where('company_id', '=', 7)->whereHas('rawrates', function ($query) use ($sub7days) {
            return $query->where('created_at', '>=', $sub7days)->orderByDesc('created_at');
        })->get()->groupBy(function ($date) {
            return Carbon::parse($date->rawrates->created_at)->format('d'); 
        });

但是我得到这个错误:

此集合实例上不存在属性[created_at]。

有什么想法吗?

共有1个答案

欧阳睿范
2023-03-14

你有一些选择来解决这个问题。

您可以使用groupByRaw,通过这种方式,您可以从正在使用的数据库中获取日期,并使用数据库函数对其进行转换。

$ratesbydate = RateDescription::where('company_id', '=', 7)
    ->whereHas('rawrates', function ($query) use ($sub7days) {
        return $query->where('created_at', '>=', $sub7days)
           ->orderByDesc('created_at')->groupByRaw("created_at::date");
    })->get();

在本例中,我使用的是数据库postgreSQL。

文档中的groupByRaw示例:https://laravel.com/docs/8.x/queries#groupbyraw

解决这个问题的另一个选择是在-

集合的groupby文档中的示例:https://laravel.com/docs/8.x/collections#method-群比

 类似资料:
  • 我正在用python制作一个潜艇游戏,但当我试图运行它时,解释器给了我一个非常奇怪的错误:“TypeError:参数1必须是pygame.Surface,而不是type。”我试图在网上搜索我的答案,但这似乎不是很常见的错误。我也试着自己去发现错误,但我觉得一切都很好。下面是我认为错误所在的部分代码:

  • 我在代码中收到“必须是数组类型,但它解析为字符串”错误。它还说i(在下面的代码中)不能解析为我没有得到的变量。 } 你们能帮我找出问题所在吗?我是Java编码的新手,所以我对这种格式还不完全满意。 非常感谢,朱奈德

  • 我知道很多人问过相关的问题,但请帮我解决。我试图复制一个我在网上找到的开源温度控制实验室。我想在树莓皮上运行它。这就是我一直遇到的错误: 生成它的代码如下所示: 我相信这段代码试图通过以下代码与另一个python文件通信: 我还不知道我周围的python代码,所以一个非常清晰的“虚拟类”解决方案的解释会很有帮助。谢谢伙计们。

  • 我正在开发一个electron应用程序,它试图从unsplash API下载一张照片,并将其设置为壁纸。当我调用API时,我得到200 OK状态并获得下载URL,但当我尝试使用axios stream方法下载照片时,我得到以下错误: 类型错误[ERR_INVALID_ARG_TYPE]:url参数必须是字符串类型。接收类型未定义 这是功能代码: 当我试图在函数中console.logDownloa

  • 问题内容: 如何更改查询以免发生此错误: XML数据类型方法“ alue”必须是字符串文字 T-SQL代码: 问题答案: 对于value方法,不能以这种方式将变量串联为字符串。您需要使用。 因此,您的示例将如下所示: