Laravel-使用偏移量时列名不明确

问题描述 投票:1回答:1

我正在使用offsetlimit对通过API返回的结果进行分页。我正在从2个名为sscusers的表中查询,它们都具有名为id(主键)的列。数据库驱动程序是Microsoft SQL Server

[调用下面的查询时(其中$offset = 2$limit = 25):

$cc = DB::table('ssc')->select('ssc.*','u.name')
      ->join('users AS u','ssc.supervisor_code','=','u.user_code')
      ->where('ssc.status','=',1)
      ->offset($offset)
      ->limit($limit)
      ->orderBy($orderby,$order)
      ->get();

我遇到以下错误:

SQLSTATE [42000]:[Microsoft] [SQL Server的ODBC驱动程序17] [SQL Server]模棱两可的列名'id'。

[Laravel(Eloquent)从上面的代码生成的查询:

select * 
from (
    select [ssc].*, 
        [u].[name], 
        row_number() over (order by [id] asc) as row_num 
    from [ssc] 
    inner join [users] as [u] on [ssc].[supervisor_code] = [u].[user_code] 
    where [ssc].[status] = 1
) as temp_table
where row_num between 26 and 50

如您在上面看到的,[id]中的不明确列为order by

如何控制偏移量/限制中使用的表和列组合?检查Laravel API显示这两个功能没有多余的参数。

php sql-server laravel eloquent
1个回答
0
投票

[@ N69S的评论,问题在于$orderBy变量仅定义为id,使其在sscu之间不明确。将其切换为u.id解决了该问题。

© www.soinside.com 2019 - 2024. All rights reserved.