You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中间件运行时报Call to a member function send() on string错误

错误原因
  • 核心问题是Laravel中间件的handle方法必须返回Illuminate\Http\Response实例,你当前代码中return route('dashboard')返回的是字符串类型的路由URL,不是标准响应对象。
  • Laravel的HTTP内核后续会尝试调用返回值的send()方法输出响应,字符串没有这个方法,就会抛出Call to a member function send() on string错误。
  • 另外代码中存在的echo $wallets语句会提前输出内容,可能导致响应头设置异常,也需要移除。
解决方案

将中间件中跳转路由的逻辑改为返回重定向响应实例,修改后的handle方法代码如下:

public function handle(Request $request, Closure $next)
{
    $wallets = Wallet::count();
    if($wallets == 0){
        // 返回重定向响应实例,而不是字符串URL
        return redirect()->route('dashboard');        
    }

    return $next($request);
}
额外优化建议
  • 原代码Wallet::get()->count()会先查询所有Wallet表记录再统计数量,数据量大时性能极差,改为Wallet::count()可以直接执行SQL的count查询,效率更高。
  • 注意dashboard路由本身带有auth中间件,若未登录的用户触发该中间件跳转,会先被重定向到登录页,符合常规业务逻辑,无需额外调整。

内容的提问来源于stack exchange,提问作者ahmad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 03:15:03