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
相关产品推荐
相关产品推荐

