Laravel - strtolower() 期望参数 1 是字符串,给定对象

Posted

技术标签:

【中文标题】Laravel - strtolower() 期望参数 1 是字符串,给定对象【英文标题】:Laravel - strtolower() expects parameter 1 to be string, object given 【发布时间】:2018-08-07 13:56:20 【问题描述】:

我正在尝试按第一个字符对标签进行分组

return $tags->select('id', 'title')
    ->orderBy('title','asc')
    ->groupBy(function($item, $key)  
        return substr($item['title'], 1, 1); 
    )
    ->get();

但它返回此错误

strtolower() 期望参数 1 是字符串,给定对象

【问题讨论】:

错误来自 Laravel 文件,还是您自己的代码? 你能提供你调用strtolower的代码吗? 我认为它的错误来自这部分 groupBy(function($item, $key) return substr($item['title'], 1, 1); ) 我没有打电话给 strtolower php 错误通常指定了文件和行。如果您在此处指定完整错误,这将很有用。其他建议是使用 xdebug,它还允许您在错误上显示回溯。然后你就会知道错误来自哪里。 【参考方案1】:

您不能使用闭包对查询进行分组,只能对结果集合进行分组:

...->orderBy(...)->get()->groupBy(...);

【讨论】:

以上是关于Laravel - strtolower() 期望参数 1 是字符串,给定对象的主要内容,如果未能解决你的问题,请参考以下文章

laravel通用和万能路由

使用 Laravel 获取数组键而不是值

htmlspecialchars() 期望参数 1 是字符串,给定对象 - laravel

Laravel 5:in_array() 期望参数 2 是数组,给定对象

Laravel 5.7 - 上传到公共文件夹

Laravel - htmlspecialchars() 期望参数 1 是字符串,给定对象