【发布时间】:2020-03-11 12:40:42
【问题描述】:
我正在使用 offset 和 limit 对通过 API 返回的结果进行分页。我从两个名为ssc 和users 的表中查询,它们都有一个名为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][ODBC Driver 17 for SQL Server][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 表明这两个函数都没有额外的参数。
【问题讨论】:
-
我们无法真正帮助您,因为我们不知道变量
$orderBy是如何填充的以及它的可能值是什么
标签: php sql-server laravel eloquent