Postgresql 如何将DB::raw()与postgres一起使用?

Postgresql 如何将DB::raw()与postgres一起使用?,postgresql,laravel,Postgresql,Laravel,我试图设置表的行号,但得到如下错误 PDOException SQLSTATE[42601]:语法错误:7错误:语法错误位于 或在“@”行1附近:设置@rownum=0^ 这是我的密码 DB::statement(DB::raw('SET @rownum=0')); $bill = MonthlyBill::info() ->billPeriod($bill_period_id) ->select(DB:

我试图设置表的行号,但得到如下错误

PDOException SQLSTATE[42601]:语法错误:7错误:语法错误位于 或在“@”行1附近:设置@rownum=0^

这是我的密码

DB::statement(DB::raw('SET @rownum=0'));
        $bill = MonthlyBill::info()
                ->billPeriod($bill_period_id)
                ->select(DB::raw("@rownum := @rownum + 1 AS row"), "monthly_bill.*", "t.*")
                ->get();

如何修复此问题?

Postgres不支持
@
变量-这是mysql的一项功能。您可以使用
row\u number()
为每一行指定一个数字:

$bill = MonthlyBill::info()
    ->billPeriod($bill_period_id)
    ->select(DB::raw("row_number() over (order by some_column) row"), "monthly_bill.*", "t.*")
    ->get();