【问题标题】:Order nulls last using laravel最后使用 laravel 订购空值
【发布时间】:2015-11-17 01:17:45
【问题描述】:

我正在尝试在 laravel 中对查询(到 postgresql 数据库)进行排序,以便空值在最后。

下单的代码是

$dbObj->orderBy($aSearchFilters["sidx"],$aSearchFilters["sord"]);

我找到了How to sort NULL values last using Eloquent in Laravel,但所有这些都有一个正在排序的固定列。他们是在不引入 sql 注入问题的情况下将 NULLS LAST 添加到订单中的一种方式吗?

【问题讨论】:

  • 是否应该在将输入值传递给DB::raw() 之前对其进行转义以解决您的问题?见stackoverflow.com/questions/23326695/…
  • 没有。当你有类似 ORDER BY 'colName' 的东西时,Postgres 不喜欢它
  • 使用orderByRaw。它的第二个参数是绑定,所以它是注入保护的。
  • 请检查this接受的答案。

标签: php postgresql laravel


【解决方案1】:

orderByRaw 是一种注入保护方法。在以下示例中,我按可空字段排序。最大的field 在前,NULLs 在最小的field 之后。

Posts::where('type', 'fix')
    ->orderByRaw('field DESC NULLS LAST')

【讨论】:

  • @Tamim 你在...->toSql()看到了什么?
猜你喜欢
  • 2020-09-08
  • 2021-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-25
  • 1970-01-01
  • 2012-09-21
  • 1970-01-01
相关资源
最近更新 更多