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

Laravel 8升级至9后出现SQLSTATE[HY093]参数不匹配错误求助

解决Laravel 9升级后SQL参数不匹配错误

问题根源是orderByRaw的用法错误。Laravel中orderByRaw的第二个参数是用于绑定SQL占位符的变量数组,而非排序方向(ASC/DESC)。你之前的代码把'asc'作为第二个参数传入,框架会将其视为需要绑定的参数,但对应的SQL片段里没有占位符,直接导致参数数量与令牌数不匹配,触发SQLSTATE[HY093]错误。

修正方法很简单:把排序方向直接写入orderByRaw的SQL字符串中,无需单独传第二个参数。同时多个with调用可以合并,让代码更简洁:

$starters = \App\Models\Starters::where('dummy','!=', 4 )
    ->where('events_id', request()->events_id)
    ->with('events', 'drivers', 'cars')
    ->orderBy('dummy', 'asc')
    ->orderByRaw('time_all asc')
    ->orderByRaw('(error_1 + error_2) asc')
    ->orderBy('time_1', 'asc')
    ->get();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 15:32:07