使用 orderBy() 更改空值的排序方式

Change how null value is sorted using orderBy()

我正在使用 Laravel 4.2 并且有一个查询生成器对象。我尝试排序的列可以为空。当该值为 null 时,它将其视为最低值。我需要让它将 null 视为最高值。

public function sort($builder, $direction = 'asc')
{
    return $builder->orderBy('table.nullable_column', $direction);
}

老实说,我只需要空值在升序排序时排在最后,在降序排序时排在最后。如果 Laravel 没有办法处理这个问题,欢迎提出建议。无法使用 google 找到任何其他内容。希望你们能帮忙。

谢谢!

简单地在列前放一个-符号

public function sort($builder, $direction = 'asc')
{
    return $builder->orderBy('-table.nullable_column', $direction);
}

参考:MySQL Orderby a number, Nulls last