如何在postgres中使用DB :: raw()?

时间:2017-10-03 15:07:39

标签: postgresql laravel

我尝试为表设置行号但是得到这样的错误

  

PDOException SQLSTATE [42601]:语法错误:7错误:语法错误   或靠近“@”LINE 1:SET @ 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();

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

Postgres不支持@变量 - 这是一个mysql功能。您可以使用row_number()代替为每行分配一个数字:

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